2016-06-30 43 views
3
<a href="" class="ng-binding ng-scope outside-month">1</a> 
<a href="" class="ng-binding ng-scope">1</a> 

点击一个元素我想这样做,其中外界月标签缺失的第二个元素的点击。我怎样才能做到这一点?如何,如果标签丢失

是否有一个特殊的硒函数或我必须写一个特殊的xpath表达式?

回答

1

如果外界月缺少目标element你应该使用=class name如下xpath: -

String xPath = "//a[@class = 'ng-binding ng-scope']"; 

如果你想使用 contains和目标元素是最后

class name您应通过last()如下: -

String xPath = "(//a[contains(@class, 'ng-binding ng-scope')])[last()]"; 

,如果你想使用contains和目标元素是不包含class name的最后一个元素,你应该如下index通过适当的: -

String xPath = "(//a[contains(@class, 'ng-binding ng-scope')])[2]"; 

,如果你想月外已丢失,但ng绑定ng范围现在你应该尝试如下: -

String xPath = "//a[contains(@class, 'ng-binding ng-scope') and not(contains(@class, 'outside-month'))]"; 

使用任何上述xPath,并按以下执行click: -

WebDriverWait wait = new WebDriverWait(driver, 10); 
el = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(xPath))); 
el.click(); 

注意: - 要确保找到element,它不是任何frame内部之前。如果它是任何frame里面你需要switchframe第一为: - driver.switchTo().frame("frame name or id")

希望它会帮助你.. :)

+0

当然。我没看到引号。 :d – gartenkralle

0
该元素之外月

它不是一个标签或属性,它只是一个更大类名 所以你需要的是找到那些NG-结合NG-scope类名称的标签:

driver.findElement(By.xpath("//a[@class='ng-binding ng-scope']")).click(); 
2

对于您的情况我想你可以设计一个使用not()和 operato XPath表达式rs在一起。

东西线沿线的:

//a[not(contains(@class, 'outside-month'))] 

我没有测试过这是否工作或没有,但让我知道,如果没有,我可以帮助完善它。