selenium+python自動化測試(二)

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。


id


name


class_name

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

link

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


partial_link

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



xpath

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


css
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容