<a href="" class="ng-binding ng-scope outside-month">1</a>
<a href="" class="ng-binding ng-scope">1</a>
我想点击缺少月外标记的第二个元素。我怎样才能做到这一点?
是否有特殊的selenium功能,还是我必须编写一个特殊的xpath表达式?
答案 0 :(得分:2)
对于您的场景,我想您可以设计一个同时使用not()
和contains()
运算符的XPath表达式。
有些事情:
//a[not(contains(@class, 'outside-month'))]
我没有测试这是否有效,但如果没有,请告诉我,我可以帮助改进它。
答案 1 :(得分:1)
如果目标element
上缺少月外,则应使用=
class name
,xpath
以下{ - 1}}:
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-binding ng-scope ,则应尝试以下操作: -
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
内,您需要switch
首先frame
: - driver.switchTo().frame("frame name or id")
希望它会对你有所帮助.. :)
答案 2 :(得分:0)
在月外的那个元素中,它不是一个标签或属性,它只是一个更大的类名 所以你需要的是找到一个具有ng-binding ng-scope类名的标签:
driver.findElement(By.xpath("//a[@class='ng-binding ng-scope']")).click();