selenium自動化測試之定位大全


一、元素定位

1、通過id進行定位
find_element_by_id() 
2、通過name進行定位
find_element_by_name() 
3、通過class進行定位,class有多重屬性時,只取其中一個
find_element_by_class_name() 
4、通過標簽進行定位
find_element_by_tag_name() 
5、通過文本進行定位
find_element_by_link_text() 
6、通過部分文本進行定位
find_element_by_partial_link_text()  
7、通過路徑進行定位
find_element_by_xpath() 
8、通過css進行定位
find_element_by_css_selector() 
9、通過復數屬性定位
find_elements_by_xxx()[0] 

二、鼠標事件
1、右擊
context_click()
2、雙擊
double_click()
3、拖動
drag_and_drop(source,target)
4、鼠標懸停
move_to_element()

例子:
from selenium.webdriver.common.action_chains import ActionChains
element = driver.find_element_by_name("name")
ActionChains(driver).context_click(element).perform()

三、鍵盤事件
1、刪除鍵
send_keys(Keys.BACK_SPACE)
2、空格鍵
send_keys(Keys.SPACE)
3、制表鍵
send_keys(Keys.TAB)
4、回退鍵
send_keys(Keys.ESCAPE)
5、回車鍵
send_keys(Keys.ENTER)
6、全選
send_keys(Keys.CONTROL,'a')
7、復制
send_keys(Keys.CONTROL,'c')
8、剪切
send_keys(Keys.CONTROL,'x')
9、粘貼
send_keys(Keys.CONTROL,'v')
10、鍵盤F1
send_keys(Keys.F1)
11、鍵盤F5
send_keys(Keys.F5)
12、鍵盤F12
send_keys(Keys.F12)

例子:
from selenium.webdriver.common.keys import Keys
driver.find_element_by_id("id").send_keys(Keys.CONTROL, 's')

四、iframe定位
1、通過iframe的id進行定位
driver.switch_to.frame("id")
2、沒有id或id為動態變化值,通過標簽定位
iframe = driver.find_element_by_tag_name("iframe")
driver.switch_to.frame(iframe)
3、若標簽不唯一,使用復數定位
iframe = driver.find_elements_by_tag_name("iframe")[0]
driver.switch_to.frame(iframe)
4、索引定位,index
driver.switch_to.frame(index)
五、select定位
例子:
<select name="NR" id="nr">
<option value="10" selected="">每頁顯示10條</option>
<option value="20">每頁顯示20條</option>
<option value="50">每頁顯示50條</option>
</select>
1、通過內容定位
select_by_visible_text("每頁顯示50條") 

2、通過索引定位,下表從0開始,值為數字
select_by_index(1) 
3、通過value值進行定位,值為字符串
select_by_value("50") 

六、alert定位
問題:如何判斷是否是alert彈框?
回答:在瀏覽器中打開彈框,箭頭定位不到元素的則是alert,能定位到的則不是alert,用普通定位
步驟一:點擊彈框按鈕
js='$(".prefpanelgo").click()'
步驟二:執行js
driver.execute_script(js)
步驟三:切換到彈框窗口
al=driver.switch_to.alert
1、獲取彈框上的文字
print(al.text)
2、點擊確定
al.accept()
3、點擊取消
al.dismiss()
4、輸入框
al.send_keys("輸入內容")

七、xpath定位
1、通過id定位
find_element_by_xpath(".//*[@id='xx']")
2、通過tag標簽定位
find_element_by_xpath(".//input[@id='xx']")
3、通過class定位
find_element_by_xpath(".//*[@class='xx']")
4、通過name定位
find_element_by_xpath(".//*[@name='xx']")
5、組合定位
find_element_by_xpath(".//*[@id='xx' and @name='xx']")
6、絕對路徑定位
find_element_by_xpath(".//*[@id='loginPanel']/div/table/tbody/tr[2]/td/input")
7、相對路徑定位
find_element_by_xpath(".//*[@id='loginPanel']//tr[2]//input")
8、文本定位
find_element_by_xpath(".//*[text()='xxx']")
9、模糊匹配定位
.//*[contains(text(),'文本內容')]
.//*[contains(@id,'xx')]
10、模糊匹配以XX開頭
.//*[starts-with(@id,'xx')]
.//*[starts-with(text(),'xx')]

說明:
1、 . 表示當前路徑(可有可無)
2、 // 表示相對定位,匹配后面內容所有項
3、 * 表示獲取全部標簽
4、 .. 回到上級目錄,與cmd命令一致
5、 and 連接兩個屬性

八、css定位
1、多個屬性定位
find_element_by_css_selector("input#xxx[name='']")
2、層級定位
find_element_by_css_selector("table>tr>td")
3、復數定位,下標從1開始
find_element_by_css_selector(".mnav:nth-child(1)")
(1)通過id
find_element_by_css_selector("#xxx")
(2)通過class
find_element_by_css_selector(".xxx")
(3)通過標簽
find_element_by_css_selector("input")
(4)通過其他屬性
find_element_by_css_selector("[name='xxx']")
4、跨層級定位(爺爺、孫子)
find_element_by_css_selector("[name='xxx']  [name='xxx']")


九、元素獲取
1、獲取文本
.text()
2、獲取屬性值
.get_attribute()
3、獲取標簽
.tag_name()
4、判斷元素顯示或隱藏
.is_displayed()
5、獲取瀏覽器名稱
print(driver.name)
6、獲取元素size
.size

十、jquery定位
1、發送文本值
$("#kw").val("python")
2、清空文本
$("#kw").val("")
3、點擊
$("#kw").click()

十一、js定位
1、通過id定位
document.getElementById("id")
2、通過name獲取
document.getElementsByName("name")[0]
3、通過標簽定位
document.getElementsByTagName("button")
4、通過class定位
document.getElementsByClassName("classname")
5、通過css選擇器定位
document.querySelectorAll("css selector")


 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM