WebDriver提供了8種元素定位方法。
以百度搜索頁面爲例,環境:selenium3+python3.7
from selenium import webdriver
driver_in = webdriver.Chrome("chromedriver安裝所在路徑")
driver_in.get("https://www.baidu.com/")
1、id定位
在輸入框輸入hello world
<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
Inputt=driver_in.find_element_by_id("kw")
Inputt.send_keys("hello world")
2、name定位
在輸入框輸入hello world
Inputt=driver_in.find_element_by_name("wd")
Inputt.send_keys("hello world")
3、tag定位
html使用tag來定義不同頁面的元素。例如,input(定義輸入框),a(定義超鏈接),table(定義表格),div(定義分區)……
一般使用tag定義一類功能,所以實際上去定義單個元素概率很低。
#執行之後會報錯
Inputt=driver_in.find_element_by_tag_name("input")
4、class定位
class屬性支持多個類名,中間以空格分開,在使用class定位時使用的是class_name。
<input type="submit" id="su" value="百度一下" class="bg s_btn">
在搜索框搜索hello world
Search=driver_in.find_element_by_class_name("s_btn").click()
5、link定位
定位文本鏈接,是需要完全匹配,精確定位。例如百度輸入框上的幾個文字鏈接。
<a href="http://news.baidu.com" name="tj_trnews" class="mnav">新聞</a>
<a href="https://www.hao123.com" name="tj_trhao123" class="mnav">hao123</a>
……
<a href="http://www.baidu.com/more/" name="tj_briicon" class="bri" style="display: block;">更多產品</a>
點擊link進行頁面跳轉。
driver_in.find_element_by_link_text("新聞").click()
6、partial link定位
partial link是對link的補充,是部分文字匹配,模糊定位。當鏈接文本過長時選擇partial link對部分文字進行定位,當然需要保證這部分文字是可以唯一標識這個鏈接。
driver_in.find_element_by_partial_link_text("更多").click()
- 注意當頁面跳轉之後,使用上述元素定位會報錯,例如在百度搜索頁面,搜索之後沒有切換窗口,那麼再次使用定位元素會報錯
還有兩種元素定位方法:XPath定位和CSS定位。
分篇記錄。