关于selenium的8种元素定位
selenium中有八種元素定位,分別是:id,name,class_name,tag_name,link_text、partial_link_text、xpath、css
簡單的定位可以用id、name、class_name、tag_name等,如果遇到復雜的元素需要定位則要使用xpath、或者css定位
下面是每種定位的用法——拿百度來說
1、id——定位到百度的輸入框,可以看到百度的輸入框id是唯一的,具體可以看下圖
在pycharm中,語句是:driver.find_element_by_id("kw").send_keys("selenium")
send_keys表示在輸入框中輸入文本
2、name——還是以百度輸入框為例,可以看出百度輸入框的name屬性也是唯一的
在pycharm 中語句是:
3、class_name——“百度一下”按鈕,可以看出這個的class_name 是唯一的
在pycharm中的語句是:driver.find_element_by_class_name("bg s_btn").click()
4、tag_name——標簽名稱
這個方法很少用到,一般用xpath/css比較多
5、link_text——用來定位文本鏈接的
比如定位百度中的新聞:driver.find_element_by_link_text("新聞").click()
6、partial_link_text:和link_text 相似,唯一不同的是定位部分文本
如:點擊hao123——driver.find_element_by_partial_link_text("hao").click()
7、xpath
(1)用xpath對標簽內的屬性進行定位(id、name、class)
方法://標簽名[@屬性=“屬性名”] 雙引號也可以用單引號表示
當某個元素的屬性不是唯一的時候,需要采用組合的方式定位:"//標簽名[@屬性=‘屬性名’ and @屬性=‘屬性名’]"
(2)用text()方法定位
//標簽名[text()=“XXXX”]
(3)模糊定位——contains()方法定位
//標簽名[contains(@屬性,“屬性值”)]
(4)軸定位
通過軸定位定位“百度一下”按鈕 首先定位到這個按鈕,可以看到這是個input標簽,input標簽的父元素是span標簽,span標簽的父元素是form標簽,那么我們可以從form標簽開始定位然后通過descendant來找到它的后代input
//form[@id='form']/descendant::input[@id='su']
通過following 來定位——following 表示標簽節點之后
//span[@id='s_kw_wrap']/following::input[@id='su']
//span[@id='s_kw_wrap']表示定位到id屬性為s_kw_wrap的<span>標簽,/following::input[@id='su']表示找到<span>結束標簽(即</span>)后的所有input標簽,然后通過[@id='su']精準定位到id屬性為’su’的<input>標簽
-
parent::可指定要查找的當前節點的直接父節點,例如,父節點是個div,即可寫成parent::div,如果要找的元素不是直接父元素,則不可使用parent,可使用ancestor,代表父輩、祖父輩等節點;
-
child::表示直接子節點元素
-
following-sibling只會標識出當前節點結束標簽之后的兄弟節點,而不包含其他子節點
總結
以上是生活随笔為你收集整理的关于selenium的8种元素定位的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python-自定义@修饰符
- 下一篇: python中json.load()、j