Selenium定位元素之x-path方法
屬性值中標籤含義
- // 雙斜槓 定位根節點,會對全文進行掃描,在文件中選取所有符合條件的內容,以列表的形式返回
- / 單斜槓 尋找當前標籤路徑的下一層路徑標籤或者對當前路標籤內容進行操作
- /text() 獲取當前路徑下的文字內容
- /@xxxx 提取當前路徑下標籤的屬性值
- | 可選符 使用|可選取若干個路徑 。如//p | //div 即在當前路徑下選取所有符合條件的p標籤和div標籤。
- . (點) 用來選取當前節點
- .. (雙點) 選取當前節點的父節點
x-path元素定位方法:
1. 屬性值模糊匹配(最強大的方法)
By.xpath("//tag-name[contains(@id,'hello')]")——匹配屬性值中包含hello的id屬性
By.xpath("//tag-name[start-with(@id,'nice')——匹配開始位置包含nice的id屬性
By.xpath("//tag-name[ends-with(@id,'good')——匹配末尾位置包含good的id屬性
以下對contains( ) 方法進行舉例:
-
公司的考勤系統的,登陸使用者名稱
-
<div class="eleWrapper" title="請輸入使用者名稱"><input type="text" class="textfield" name="ID9sLJQnkQyLGLhYShhlJ6gPzHLgvhpKpLzp2Tyh4hyb1b4pnvzxFR!-166749344!1357374592067" id="nt1357374592068" /></div>
-
解決方法
使用xpath的匹配功能,//input[contains(@id,'nt')]
其他兩種方法類似,不再舉例說明。
2. 使用xpath屬性定位
By.xpath("//tag-name[@id='kw1']")
By.xpath("//tag-name[@type='name' and @name='kw1']")
3.通過元素索引定位
By.xpath("//tag-name[4]")
4. 通過絕對路徑做定位(相信大家不會使用這種方式)
By.xpath("html/body/div/form/input")
By.xpath("//tag-name")