2016-02-11 43 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; 
    }