2017-08-09 48 views
0

處理重複的XPath需要你的幫助下面的查詢:硒(JAVA):從不同的標籤

我的網站是有標籤的結構,所以我可以在多個選項卡中打開同一個頁面。 現在,問題是id對於每個字段w.r.t都是動態的。它的標籤位置。

例如, ID爲字段的一個

上標籤3

tfgld4510m000 -3-網格-1- tfgld418.fitr -8-濾波器值 - 控制 - 插件

上片7

tfgld4510m000 -7-網格-1- tfgld418.fitr -8-濾波器值 - 控制 - 插件

我想不論其標籤位置創建定位器,所以我創建的XPath

.//*[contains(@id,'grid-1-tfgld418.fitr-8-filter-value-control-widget')] 

但這裏的問題是,如果這兩個選項卡是開放的,我要點擊字段標籤7這個XPath還檢測標籤3中的字段。

您可以請幫我解決方案,以便我可以訪問該字段而不管標籤位置。

+0

那麼什麼是確切的'問題與這ID變成動態的每個字段,你可以創建動態的XPath和傳遞價值WRT它的標籤位置?你正在嘗試自動化的確切手動步驟是什麼? – DebanjanB

+0

考慮我有兩個選項卡......在保存按鈕的tab1 id是'XXX-1-save',在tab2上是'XXX-2-save'...現在我想單擊tab2中的保存按鈕...如果你使用xpath .//* [contains(@ id ='save')] ...它會檢測到tab1和2上的兩個定位符..並且throws元素不可點擊,因爲控件在tab2上..我希望它解釋問題.. – Robin

+0

不,使用'xpath .//* [contains(@ id ='save')]'不應該檢測到'tab1和2'上的兩個定位符。 Selenium的重點仍然放在'1'頁面上。你需要將'Selenium'的焦點轉移到'tab2'。快速瀏覽您的代碼塊可能會幫助我們診斷您的確切位置。 – DebanjanB

回答

0

按您需要

int a = 7; 
driver.findElement(By.xpath(".//*[@id='tfgld4510m000 -"+a+"- grid-1-tfgld418.fitr-8-filter-value-control-widget']")); 

希望它會幫助你:)

+0

我以前試過..和它的工作,但我使用混合框架,從Excel中讀取關鍵字和數據..所以這個方法的問題是我已經獲取了很多數據,如客戶,物品等這個關鍵字方法。所以我想避免提取製表符號。並創建通用的xpath,以便它應該工作,無論選項卡序列。 – Robin

+0

頁面上是否存在可爲您定義此屬性的任何屬性。例如:如果你的URL或任何其他屬性可以返回你的製表符號碼,那麼只需要在你的int中傳遞該值。所以動態您的xpath將被構建 –

+0

您可以使用getAttribute方法並獲取字符串中的值,然後使用spill方法您可以獲取標籤編號..現在只需將其傳遞到int變量後輸入 –