不能点击带有硒网络驱动程序的Angular-JS按钮:ElementNotVisibleException
本文关键字:Angular-JS 按钮 ElementNotVisibleException 驱动程序 网络 不能 | 更新日期: 2023-09-27 17:55:09
我试图点击这个按钮(它清楚地在页面上和视图中):
<button class="ui tertiary button" data-ng-click="addRoom()" data-ng-disabled="pendingRequests >= 1">ADD ROOM TO CRUISE CART</button>
这是我的代码:
driver.FindElement(By.CssSelector("button[data-ng-click^='addRoom']")).Click();
它总是抛出此错误:
OpenQA.Selenium.ElementNotVisibleException : 元素当前不可见,因此可能无法与之交互
Selenium WebDriver 是否与 angular JS 兼容?
我已经设法确定了问题,有多个具有完全相同的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();
}
}
这得到了活动按钮,谢谢你的帮助。我现在可以继续前进了
有同样的问题,你可以这样做(使用 linq)
driver.FindElement(By.CssSelector("button[data-ng-click^='addRoom']")).First(x=>x.Displayed()).Click();
将代码更改为以下内容:
driver.findElement(By.xpath("//button[contains(text(),'ADD ROOM TO CRUISE CART')]")).click();