2016-02-11 76 views
0

我目前正在使用硒框架對web應用程序進行運行。使用xpath來定位元素。對於應用程序中的特定下拉菜單(帶有過濾器),xpath會經常更改(對於下拉菜單中的可用選項)。下拉菜單中的選項位於span範圍內。有什麼辦法來處理動態xpath?目前即時通訊使用螢火蟲獲取xpaths。Xpaths正在動態變化

+0

給予一定的HTML代碼,以瞭解動態變化的? –

+0

最初,我想點擊下拉選項的xpath是:「/ html/body/div [1]/div [5]/ul/li [2]/label/span」但是目前xpath爲相同的選項已更改爲「/ html/body/div [1]/div [7]/ul/li [2]/label/span」。 xpath是否有任何改變的原因,我想知道xpath是否可以動態改變。 – kumar

+0

而不是寫入相對xpath創建一個類,id或文本的xpath。 Firebug創建一個相對xpath。 –

回答

0

如果您知道該期待什麼,則可以隨時使用XPATH文本匹配。

//*[text()='DropdownValue'] 

,如果你有在下拉列表中的元素:

//li[text()='DropdownValue'] 

如果你能提供例如下拉結構或只是你的情況的HTML代碼,它會更容易找到合適的解。

+0

我想從下拉列表中選擇「Abereen District」選項。當我檢查與火蟲的特定選項時顯示以下結構:

+0

我建議使用這個:// span [text()='Abereen District'] –

+0

我厭倦了你的建議,但它不工作 – kumar

0

你可以得到每個元素的下拉菜單裏,得到其中包含文本的元素的索引,然後單擊它:

List<WebElement>elems = driver.findElements(By.xpath("xpath from every element")); 
elems.get(getIndex(elems, "Abereen District")).click(); 



private int getIndex(List<WebElement>elems, String elemText) { 

     for(int i = 0; i < elems.size(); i++) 
     { 
      if(elems.get(i).getText().contains(elemText)) 
       return i; 
     } 

     return -1; 
    }