1. 瀏覽器操作
1、控制瀏覽器窗口大小
driver.set_window_size(800,800) # 設(shè)置瀏覽器窗口大小
driver.maximize_window() # 設(shè)置瀏覽器最大化
2、控制瀏覽器后退、前進、刷新
? ? ? second_url = 'http://news.baidu.com/'
? ? ? driver.get(second_url)??# 訪問第二個頁面
? ? ? driver.back()? ? ? ? ? ? ? #?瀏覽器?返回(后退)
? ? ? driver.forward()? ? ? ? #瀏覽器前進?
? ? ? driver.refresh()? ? ? ?#瀏覽器刷新
? ? ? driver.quit()? ? ? ? ? ? #瀏覽器退出
? 3. 操作暫停
import time
? ? ?time.sleep(5) # 顯示等待5s
4. 瀏覽器滾動
js = "var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)
time.sleep(5)? ? ? ? ?#? 鼠標滾動到底部
js = "var q=document.documentElement.scrollTop=0"
driver.execute_script(js)? # 然后滾動到上面
2. 元素操作
1. 文本框簡單操作
click() 單擊、clear()清空、send_keys()文本框輸入、submit()提交表單,模擬回車操作
driver.find_element_by_id("xxx").clear()
driver.find_element_by_id("xxx").send_keys("username")
? ? driver.find_element_by_id("xxx").click()?
2.?鼠標事件
ActionChains 類提供的鼠標操作的常用方法: perform() 執(zhí)行所有 ActionChains 中存儲的行為
context_click() 右擊? ? ? ? ? ? ? double_click() 雙擊?? ? ? ? ? ?
move_to_element() 鼠標懸停? ?? drag_and_drop() 拖動??
? ActionChains(driver).context_click(element1).perform()
? ?ActionChains(driver).double_click(element1).perform()
? ?ActionChains(driver).move_to_element(element1).perform()
? element = driver.find_element_by_name("xxx")#定位元素的源位置??
? target = driver.find_element_by_name("xxx")#定位元素要移動到的目標位置
? ?ActionChains(driver).drag_and_drop(element,target).perform()#執(zhí)行元素的拖放操作
3. 鍵盤事件
在使用鍵盤按鍵方法前需要先導(dǎo)入 keys 類包。
from selenium.webdriver.common.keys import Keys? #引入 Keys 模塊
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
driver.find_element_by_id("kw").send_keys("seleniumm")?#輸入框輸入內(nèi)容
driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)? #刪除多輸入的一個 m
driver.find_element_by_id("kw").send_keys(Keys.SPACE)?#輸入空格鍵
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')#ctrl+a 全選輸入框內(nèi)容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x')#ctrl+x 剪切輸入框內(nèi)容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'v')#ctrl+v 粘貼內(nèi)容到輸入框
driver.find_element_by_id("su").send_keys(Keys.ENTER)#通過回車鍵盤來代替點擊操作
4.單選復(fù)選框操作
(1).單選: radio
首先是定位選擇框的位置,定位 id,點擊就可以了 ,即可完成單選的選擇。
? ? driver.find_element_by_id("xxx").click()
(2).復(fù)選框: checkbox
勾選單個框,比如勾選 selenium 這個,可以根據(jù)它的 id=c1 直接定位到點擊就可以了
全部勾選,可以用到定位一組元素,從上面源碼可以看出,復(fù)選框的type=checkbox,這里可以用 xpath 語法: .//*[@type='checkbox']
? ? ? ?這里注意,敲黑板做筆記了: find_elements 是不能直接點擊的,它是復(fù)數(shù)的,所以只能先獲取到所有的 checkbox 對象,然后通過 for 循環(huán)去一個個點擊操作判斷是否選中: is_selected()
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("file:///C:/Users/Gloria/Desktop/checkbox.html")
s = driver.find_element_by_id("boy").is_selected()?# 沒點擊操作前,判斷選項框狀態(tài)
print s
driver.find_element_by_id("boy").click()?# 點擊后元素
r = driver.find_element_by_id("boy").is_selected()?# 點擊后,判斷元素是否為選中狀態(tài)
print r
driver.find_element_by_id("c1").click()# 復(fù)選框單選
checkboxs = driver.find_elements_by_xpath(".//*[@type='checkbox']")?# 復(fù)選框全選
for i in checkboxs:
? ?i.click()
5.select下拉框操作
(1).二次定位
1.定位 select 里的選項有多種方式,這里先介紹一種簡單的方法:二次定位
2.基本思路,先定位 select 框,再定位 select 里的選項
s = driver.find_element_by_id('xxx')? # 分兩步:先定位下拉框,再點擊選項
s.find_element_by_xpath("http://option[@value='50']").click()
還有另外一種寫法也是可以的,把最下面兩步合并成為一步:
driver.find_element_by_id("nr").find_element_by_xpath("http://option[@value='50']").click()
( 2).直接定位
通過xpath或是css一次性直接定位到 option 上的內(nèi)容
driver.find.element_by_xpath(".//*[@id='xxx']/option[2]").click()
(3).通過索引定位
from selenium.webdriver.support.select import Select? # 導(dǎo)入 select 模塊 Select類
select_by_index()? #通過索引定位
? ? ? ?select_by_index(2)??#(從 0 開始計數(shù))如選擇第三個選項:
s = driver.find_element_by_id('xxx')
Select(s).select_by_index(2)
select_by_value()? #通過 value 值定位? select_by_value("1")
6. 文件上傳
F12查看源代碼,看文件屬性如果是input屬性
<input id="file_name" class="text-1 w255" type="text" readonly="" value="" data-file=""/>
直接 send_keys(“文件地址”)
file=driver.find_element_by_name("files")
file.send_keys("C:\\Users\\Administrator\\Pictures\\Saved Pictures\\hello.jpg")
但有的研發(fā)的同學(xué)做成了 readonly 屬性的input 需要另外的方法
https://www.cnblogs.com/BlueSkyyj/p/7523844.html
3. 元素定位
selenium共有八種元素定位的方法,分別為id、name、class、tag、link、partial_link、xpath及css。



從元素屬性可以分析出,有個href = "http://www.hao123.com,說明它是個超鏈接,對于這種元素,可以用以下方法

有時候一個超鏈接它的字符串可能比較長,如果輸入全稱的話,會顯示很長,這時候可以用一模糊匹配方式,截取其中一部分字符串就可以了,如“hao123”,只需輸入“ao123”也可以定位到。

xpath即為XML路徑語言,一種元素定位方法,就是查找元素的路徑,基本格式為://*[@+元素],可以通過元素的id、name、class這些屬性定位,如下圖


css:
? 1.css可以通過元素的id、class、tag這三個常規(guī)屬性直接定位到
? 2.如下是百度輸入框的的html代碼:
<input id="kw" class="s_ipt" type="text" autocomplete="off" maxlength="100" name="wd"/>
? 3.css用#號表示id屬性,如:#kw
? 4.css用.表示class屬性,如:.s_ipt
? 5.css直接用標簽名稱,無任何標示符,如:input
