一、多標籤窗口(不懂)
from selenium import webdriver
# 開瀏覽器
driver = webdriver.Firefox()
# 訪問北京58
url = 'http://bj.58.com/'
driver.get(url)
# 定位到房屋出租元素
el = driver.find_element_by_link_text
('房屋出租')
# 打印當前的瀏覽器句柄(瀏覽器的身份證列表)
print('點擊之前的身份證列表是:',
driver.window_handles)
print('點擊前的url:',driver.current_url)
el.click()
print('點擊之後的身份證列表是:',
driver.window_handles)
print('當前標題:',driver.title)
# 進入第二個窗口
# 保存句柄列表
handle_list = driver.window_handles
# 同句柄(身份證)索引進入相關的窗口
driver.switch_to.window(handle_list[1])
print('切換之後的標題:',driver.title)
二、表單框架
(一)進入表單(似懂非懂)
# 導包
from selenium import webdriver
import time
# 創建瀏覽器
driver = webdriver.Firefox()
# 訪問126
url = 'http://126.com/'
driver.get(url)
# 防止加載太快
time.sleep(5)
# 定位到表單
# el_frame = driver.find_element
_by_css_selector('#x-URS-iframe')
# 切換進入表單中# driver.switch_to.frame(el_frame)
# 通過id進入
# 在表單中定位賬號輸入框
el_user = driver.find_element_by_name
('email')
el_user.send_keys('itcast_soft_test')
# 定位密碼輸入框標籤
el_pwd = driver.find_element_by_name
('password')
el_pwd.send_keys('1qaz2wsx#EDC')
# 定位登陸按鈕
el_sub = driver.find_element_by_id('dologin')
# 點擊登錄
el_sub.click()
time.sleep(5)
driver.close()
(二)退出表單
案例:本地加載-多表單切換
# 導入os庫,用於獲取文件路徑
import os
import time
# 創建瀏覽器
driver = webdriver.Firefox()
# 獲取網頁訪問路徑,os.path.abspath
(文件名)獲取文件的絕對路徑
file_path = 'file:///' + os.path.abspath
('example_frame.html')
print(file_path)
driver.get(file_path)
time.sleep(5)
# 切換到第一個表單中
driver.switch_to.frame('itcast_frame1')
# 切換到第二層表單
driver.switch_to.frame('itcast_frame2')
# 定位到輸入框
el = driver.find_element_by_id
('sb_form_q')
el.send_keys('selenium')
# 定位點擊按鈕
el_sub = driver.find_element_by_id
('sb_form_go')
# 定位一個元素,驗證已經到達深層表單
el_search = driver.find_element_by_id
('sb_form')
driver.switch_to.default_content()
try:
el_search = driver.find_element_by_id
('sb_form') except:print('已經從表單中退出')
三、警告框
from selenium import webdriver
import time
# 創建一個瀏覽器
driver = webdriver.Firefox()
# 訪問百度
url = 'http://www.baidu.com'
driver.get(url)
# 定位到設置
el = driver.find_element_by_link_text('設置')
el.click()
# 定位搜索設置,並點擊
el_set = driver.find_element_by_css_
selector('.setpref')
# 定位保存設置按鈕
el_save = driver.find_element_by_css_
selector('.prefpanelgo')
time.sleep(2)
# 進入警告框中,並且點擊接受
#driver.switch_to.alert.accept()
# 進入警告框,並且解散警告框
time.sleep(5)
driver.quit()
四、鼠標鍵盤框
from selenium import webdriver
# 導入動作鏈類
from selenium.webdriver import ActionChains
# 開瀏覽器
driver = webdriver.Firefox()
# 訪問百度
url = 'http://www.baidu.com'
driver.get(url)
# 定位到logo元素
el_logo = driver.find_element_by
_css_selector('#lg > map:nth-child(2)
> area:nth-child(1)')
# 鼠標右擊操作,操作元素前,需要將操作的元素定位
出來並且穿入相應的動作中,如果要執行操作,需要調
用perform()
ActionChains(driver).context_click(el_logo)
.perform()
from selenium import webdriver
# 導入動作鏈類
from selenium.webdriver import ActionChains
import time
# 開瀏覽器
driver = webdriver.Firefox()
# 訪問頭條
url = 'https://www.toutiao.com/ch/news
_society/'
# 定位到需要雙擊操作的元素
el = driver.find_element_by_css_selector
('.wchannel > ul:nth-child(2) >
li:nth-child(2) > a:nth-child(1)
> span:nth-child(1)')
# 雙擊定位到的元素,進行切換
ActionChains(driver).double_click(el).
perform()
time.sleep(5)
driver.quit()
from selenium import webdriver
# 導入動作鏈類
from selenium.webdriver import ActionChains
import time
# 開一個瀏覽器
driver = webdriver.Firefox()
driver.maximize_window()
# 訪問京東
url = 'http://www.jd.com'
driver.get(url)
# 獲取分類組元素
el_list = driver.find_elements_by_
class_name('cate_menu_item')
for el in el_list:
# 鼠標懸停操作
ActionChains(driver).move_to_element(el)
.perform()
time.sleep(1)driver.quit()
from selenium import webdriver
# 導入Key類,key類中包含很多鍵盤按鈕操作
from selenium.webdriver.common.keys import
Keys
# 打開瀏覽器
driver = webdriver.Firefox()
# 訪問必應搜索
url= 'http://cn.bing.com/'
driver.get(url)
# 定位到輸入框
el = driver.find_element_by_id('sb_form_q')
# 輸入關鍵字
el.send_keys('selenium')
time.sleep(1)
el.send_keys(Keys.CONTROL,'a')
time.sleep(1)
# 執行剪切操作
el.send_keys(Keys.CONTROL,'x')
time.sleep(1)
# 執行粘貼操作
el.send_keys(Keys.CONTROL,'v')
time.sleep(1)
# 清空操作
el.clear()
#輸入 單詞
el.send_keys('seleniumn')
time.sleep(1)
# 退格刪除
el.send_keys(Keys.BACK_SPACE)
time.sleep(5)
driver.quit()
五、下拉框
案例一:百度
from selenium import webdriver
# 導入Select類
from selenium.webdriver.support.select
import Select
# 創建一個瀏覽器
driver = webdriver.Firefox()
# 訪問百度
url = 'http://www.baidu.com'
driver.get(url)
# 定位到設置元素並且點擊
el = driver.find_element_by_link_text
('設置')
# 定位搜索設置,並且點擊
el_set = driver.find_element_by_
css_selector('.setpref')
# 定位到下拉框元素
el_select = driver.find_element_by_id( 'nr' )
# 創建下拉框對象
selobj = Select(el_select)
# 通過選項的索引進行設置
# selobj.select_by_index(0)
# time.sleep(1)
#
selobj.select_by_index(1)
# time.sleep(1)
# selobj.select_by_index(2)
# selobj.select_by_value('50')
# time.sleep(1)
#
selobj.select_by_value('20')
# time.sleep(1)
#
selobj.select_by_value('10')
# time.sleep(1)
# 通過可見文本進行選擇
# selobj.select_by_visible_text
('每頁顯示50條')
# time.sleep(1)
# selobj.select_by_visible_tex
t('每頁顯示10條')
# selobj.select_by_visible_text
('每頁顯示20條')
#
打印對一個選擇的選項
print ( selobj.first_selected_option.text )
案例二:hao123
from selenium import webdriver
import time
# 創建瀏覽器
driver = webdriver.Firefox()
# 訪問好123
url = 'https://www.hao123.com/'
driver.get(url)
for i in range(100):
# x管水平,y管垂直
js = 'window.scrollTo(0,%s)'%(i*100)
driver.execute_script(js)
time.sleep(0.5)
# js1= "var q=document.documentElement.
scrollTop=0"# driver.execute_script(js1)
# driver.execute_script(js1)
driver.quit()
六、定位等待
顯式等待
from selenium import webdriver
import time
# 創建瀏覽器
driver = webdriver.Firefox()
# 訪問好123
url = 'https://www.hao123.com/'
driver.get(url)
for i in range(100):
# x管水平,y管垂直
js = 'window.scrollTo(0,%s)'%(i*100)
driver.execute_script(js)
time.sleep(0.5)
# js1= "var q=document.documentElement
.scrollTop=0"# driver.execute_script(js1)
# driver.execute_script(js1)
driver.quit()
隱式等待
from selenium import webdriver
# 創建瀏覽器
driver = webdriver.Firefox()
url = 'https://www.amazon.cn/'
driver.get(url)
driver.implicitly_wait(20)
driver.close()
六、cookies
from selenium import webdriver
# 創建瀏覽器
driver = webdriver.Firefox()
# 訪問有道
url = 'http://www.youdao.com/'
driver.get(url)
# 獲取cookies,直接調用,不需要參數
data = driver.get_cookies()
print(data)
# 刪除所有cookies
driver.delete_all_cookies()
# 設置cookies
cookie = {"name":"itcast","value":"soft_test"}
driver.add_cookie(cookie)# 獲取
data1 = driver.get_cookies()
print(data1)
——Selenium封裝——
(不懂)
from selenium import webdriver
import time
class Common(object):
# 初始化
def __init__(self):
# 創建瀏覽器
self.driver = webdriver.Firefox()
# 瀏覽器最大化
self.driver.maximize_window()
# 訪問指定url
def open_url(self, url):
self.driver.get(url)
self.driver.implicitly_wait(10)
def close_driver(self):
self.driver.quit()
# 結束的時候清理了
def __del__(self):
time.sleep(3)
self.driver.quit()
if __name__ == '__main__':
com = Common()
com.open_url('http://www.baidu.com')
com.open_url('http://www.hao123.com')
com.close_driver()