本文主要是講解在web頁面中如何定位元素,這是進行自動化操作的前提。
我們主要是要做web自動化,通常乙個web頁面上有輸入框、按鈕、文字鏈結、等元素,自動化測試要做的就是模擬滑鼠和鍵盤來操作這些元素,如單擊、輸入、滑鼠懸停等。操作這些元素的前提是要定位它們,就是找到它們的位置,所以下面可以利用webdriver採用幾種不同的方式去進行元素定位。
id定位find_element_by_id()
name定位find_element_by_name()
tag定位find_element_by_tag_name()
class定位find_element_by_class_name()
link_text定位find_element_by_link_text()
partial link定位find_element_by_partial_link_text()
xpath定位find_element_by_xpath()
css_selector定位find_element_by_css_selector()
它是專門用來定位文字鏈結的,就是頁面上有文字鏈結(元素標籤對之間的文字資訊),可以用link來進行定位
從上面的圖中可以看到,link= 「國家衛健委再次回應春節返鄉問題」,所以相應的方法是:find_element_by_link_text(「國家衛健委再次回應春節返鄉問題」),定位後,就可以進行操作了
partial link定位是對link定位的一種補充,有些文字鏈結比較長,這個時候我們可以取文字鏈結的部分文字進行定位,只要這部分文字可以唯一地標識這個鏈結即可
還是以上面的圖為例:partial_link= 「國家衛健委再次」 (這裡可以隨意擷取文字,只要能唯一匹配到整個語句就好),所以相應的方法是: find_element_by_partial_link_text(「國家衛健委再次回」),定位後,就可以進行操作了
find_element_by_xpth(
"//input[@id='kw']"
), find_element_by_xpth(
"//input[@name='wd']"
), find_element_by_xpth(
"//input[@class='s_ipt']"
), find_element_by_xpth(
"//input[@maxlength='255']"
), find_element_by_xpth(
"//input[@autocomplete='off']"
)
另外一種是:
find_element_by_xpth(
"//*[@id='kw']"
), find_element_by_xpth(
"//*[@name='wd']"
), find_element_by_xpth(
"//*[@class='s_ipt']"
), find_element_by_xpth(
"//*[@maxlength='255']"
), find_element_by_xpth(
"//*[@autocomplete='off']"
)
6.使用text方法
text()方法用於匹配顯示文字資訊
如下圖,對於文字資訊
對應的方法是:find_element_by_xpath("//span[text()=『醫院拒診中高風險地區患者被約談』]")
當然,contains方法和text()方法是可以結合一起使用的
對應的方法是:find_element_by_xpath("//span[contains(text(),『醫院拒診中』)]") (親測有效)
css是一種語言,用來描述html和xml文件的表現,css使用選擇器為頁面元素繫結屬性,它的定位速度比xpath快,但是難度比較大
語法如下:
選擇器 例子 描述
.class
.s_ipt class選擇器,選擇class
="s_ipt"的所有元素
#id kw id選擇器,選擇id = "kw"的所有元素
** 選擇所有元素
element p 選擇所有
元素element>element div>
input 選擇父元素為
的所有<
input
>元素
element+element div+
input 選擇同一級中緊接在
元素之後的所有<
input
>元素
[attribute=value]
[target=_blank] 選擇target=
"_blank"的所有元素find_element_by_css_selector("[class ^= bg]") 查詢class屬性以"bg"字串開頭的所有元素
find_element_by_css_selector("[class$= wrap]") 查詢class屬性以"wrap"字串結尾的所有元素
find_element_by_css_selector(「form > input:nth-child(2)」) 查詢form標籤下第二個input標籤的元素
以上在web頁面中如何定位元素的各種方式和方法基本就介紹完了,感覺是比較詳細了,而且我都基本親自操作驗證了一遍,如果後面有缺漏或者有新的方法,那我會再進行補充和修改。
WebDriver 定位元素的8種方式
在ui層面的自動化測試開發中,元素的定位與操作是基礎,也是經常遇到的困難所在。webdriver提供了8種定位 id定位 find element by id id值 id屬性是唯一的 1 driver.find element by id loginname clear 使用者名稱輸入框的id屬性...
css selector定位元素
selenium中經常要用css selector定位元素,雖說可以用firefox的firebug firepath直接copy元素的xpath路徑,但有時還是很必要用css selector來定位,也算技多不壓身吧 系統的學習一下,也當是臨陣磨槍。一共8種方式的選擇器。根據元素的標籤定位,如下 ...
CSS Selector定位元素
滴 今日打卡!博主之前寫過一篇關於xpath元素定位的部落格,裡面也有提到過xpath方法和css選擇器方法的比較 今天就補上css選擇器定位筆記。1.css選擇器定位元素 1 標籤選擇器 driver.find element by css selector li 選擇所有 li標籤元素 2 類選...