我试图点击此按钮(显然在页面上和视图中):
<button class="ui tertiary button" data-ng-click="addRoom()" data-ng-disabled="pendingRequests >= 1">ADD ROOM TO CRUISE CART</button>
&#13;
这是我的代码:
driver.FindElement(By.CssSelector("button[data-ng-click^='addRoom']")).Click();
它总是抛出这个错误:
OpenQA.Selenium.ElementNotVisibleException:元素当前不可见,因此可能无法与
进行交互
Selenium WebDriver是否与angular JS兼容?
答案 0 :(得分:1)
我已经设法识别问题,有多个按钮具有完全相同的XPath,一个在给定时间可见,另一个不可见。我
var list = driver.FindElements(By.CssSelector("a[data-ng-click='addRoom()']")).ToList();
foreach (var item in list)
{
Console.WriteLine(item.Displayed);
if(item.Displayed)
{
item.Click();
}
}
这有一个活动按钮,谢谢你的帮助。我现在可以前进了
答案 1 :(得分:0)
使用此代替代码
driver.findElement(By.xpath(&#34; //按钮[包含(text(),&#39; ADD ROOM TO CRUISE CART&#39;)]&#34;))。click();
答案 2 :(得分:0)
有同样的问题,你可以这样做(使用linq)
driver.FindElement(By.CssSelector("button[data-ng-click^='addRoom']")).First(x=>x.Displayed()).Click();