2014-10-09 70 views
-1

我有一个网页有多个容器,每个容器都有一个头(fooHeading),名称(fooName)和一个按钮(fooButton)。如何找到没有名称或ID的唯一按钮?

会有在同一页面上的多个容器,看起来如下:

 
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 
fooTitle fooButton 
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 

每个容器的HTML看起来与以下内容:

<div class="fooHeading"> 
    <span class="fooName"> 

     fooTitle 

    </span> 
    <button class="fooButton"></button> 
</div> 

FooTitle是唯一的东西会更改。我怎样才能唯一点击fooButton基于什么fooTitle?

+0

文档可帮助:http://www.seleniumhq.org/docs/appendix_locating_techniques.jsp – SiKing 2014-10-09 19:53:06

回答

2

我推荐的XPath:

WebElement button = driver.findElement(By.xpath("//span[contains(text(), 'fooTitle')]/../button")); 

这会找到一个span包含文本fooTitle..将上升到div,然后找到button这是div的孩子。

+0

它的工作,非常感谢你! – Matt 2014-10-09 19:14:55

0

我也在我的项目中遇到这样的问题,同时在硒中创建脚本时,所有传统的方法都会失败,例如xpath,css选择器等。

如果同样的情况发生在你身上,我的方法可能会帮助你 首先你必须从开始检查按钮标签的总数,然后找到你的按钮的计数位置,例如,它的位置是POS

List<WebElement> element = driver.findElements(By.tagName("button")); 
Iterator<WebElement> itr = element.iterator(); 
int count=0; 
WebElement e = null ; 

while(itr.hasNext()) 
{ 
    count++; 

    e = (WebElement) itr.next(); 

    if(count==pos) 
     break; 
} 

//System.out.println(count); 
//for checking total count without using break in while loop 

e.click(); 
相关问题