selenium定位大全

2021-09-13 21:28:41 字數 2024 閱讀 2847

寫在之前-關於使用優先順序

p0:selenium自帶的基礎定位

p1:css定位

p2:xpath定位(遍歷dom樹。生成xml檔案,再去匹配xpath)

p3:js定位

xpath-路徑選擇器:定位根據的是路徑來定位,位置是唯一確定的

css-樣式選擇器:是根據元素的樣式定位的相對來說

xpath可以根據子類定位父類,css目前不可以(有個has但是在實驗階段)

1.根據單一元素屬性查詢:

2.根據範圍元素屬性查詢

3.如何用css定位:

通過id:#value

通過classname:.value

通過標籤名:tag1>tag2>tag3

通過標籤名+元素屬性結合:

tag1.value>tag2#values>tag3[attribute=value]

通過模糊匹配標籤名+元素屬性結合:

tag1>tag2>tag3[attribute^=value] (匹配以value開頭的屬性)

tag1>tag2>tag3[attribute$=value](匹配以value結尾的屬性)

tag1>tag2>tag3[attribute*=value](匹配包含value任意位置的屬性)

通過同級元素並行:

#value.values(匹配id是value,classname是values的屬性)

4.如何用xpath定位:// 層級下所有元素, /緊跟著的第乙個元素

通過屬性=值://tag[@attribute='value'](tag可以為*,意為全部標籤名)

eg://input[@id='kw']

通過同級元素並行:

//tag[@attribute='value' and @attributes='values']

通過層級:

/html/body/div[@attribute='value']

/html/body/div[1]

通過模糊匹配標籤名:

//tag[starts-with(@attribute,'value')](匹配以value開頭的屬性)

//tag[ends-with(@attribute,'value')](匹配以value結尾的屬性,要注意的是,ends-with只支援xpath2.0)

//tag[substring(@attribute, string-length(@attribute) - string-length('value') + 1) = 'value']

//tag[contains(@attribute,'value')](匹配包含value任意位置的屬性)

通過已知子節點找父節點:

//tag[contains(@attribute,'value')]//parent::tag[@attribute='value']

通過已知節點找其前面平行節點:

//tag[contains(@attribute,'value')]//preceding-sibling::tag[@attribute='value']

通過已知節點找其後面平行節點:

//tag[contains(@attribute,'value')]//following-sibling::tag[@attribute='value']

通過文字匹配:

//tag[text()='value']

(定位也可以與模糊匹配結合eg://tag[starts-with(text(),'value')])

Selenium 元素定位

ui自動化中元素的定位是最最基本,但也是最讓人頭痛的地方。控制項的動態載入,屬性的動態生成抑或因為開發的懶而造成控制項的識別問題總是自動化測試的噩夢。webdriver作為主流的網頁測試工具提供了非常豐富的識別控制項的方法。這次在寫自動化庫的時候也遇到各種定位問題,著實抓狂了一陣,但最終都解決了。雖...

selenium元素定位

單數形式 複數形式,返回的是乙個列表 使用範圍 a.元素有id屬性 b.id不是動態的,為固定值 driver.find element by id id屬性值 使用範圍 a.元素有id屬性 b.id不是動態的,為固定值 語法 driver.find element by name name屬性值 ...

selenium元素定位

一,元素定位方式 from selenium import webdriver from selenium.webdriver.support import expected conditions as ec import time driver webdriver.chrome driver.ge...