xpath不等於、不包含的寫法

簡介:寫自動化用例時經常會用到xpath來定位元素,這裏總結一下xpath語法中不等於、不包含的寫法

問題

如下圖:該頁面有兩個頁籤,我們需要在第二個頁籤進行操作:在輸入框輸入後點擊確定按鈕。
在這裏插入圖片描述

第一次寫的xpath是這樣的

//button[./span[text()='確定']]

運行時報錯 element not interactable,出現這種錯誤通常因爲是這個xpath定位到的元素不在當前頁面,所以報不可點擊錯誤。報錯信息如下:

org.openqa.selenium.ElementNotVisibleException: element not interactable

分析

用XpathHelper在頁面測試了一下,發現該xpath定位到了兩個確定按鈕,如下圖:
在這裏插入圖片描述

通過F12查看對應元素的dom樹,如下圖
在這裏插入圖片描述
可以看到該目標元素上層有兩個class='el-tab-pane’的div,點開第一個class='el-tab-pane’的div,如下圖:
在這裏插入圖片描述
可以看到,第一個class='el-tab-pane’的div下面也有一個“確定”按鈕,說明我前面寫的xpath定位到了第一個“確定”按鈕。
繼續觀察,第一個class='el-tab-pane’的div裏面還多了一個 style=“display: none;” 屬性,那我們要定位第二個div時就可以排除這個屬性。

解決

這裏嘗試了三種寫法都可以定位到第二個“確定”按鈕,分別如下:

  • 使用不等於符號:!=
//div[@class='el-tab-pane' and @style!='display: none;']//button[./span[text()='確定']]
  • 使用 not()
//div[@class='el-tab-pane' and not(@style='display: none;')]//button[./span[text()='確定']]
  • 使用 not(contains())
//div[@class='el-tab-pane' and not(contains(@style,'none'))]//button[./span[text()='確定']]

最後都能成功定位到第二個“確定”按鈕,如下圖:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章