无法使用selenium web-driver单击Angular-JS按钮:ElementNotVisibleException

时间:2015-06-10 04:40:28

标签: c# angularjs firefox selenium selenium-webdriver

我试图点击此按钮(显然在页面上和视图中):



<button class="ui tertiary button" data-ng-click="addRoom()" data-ng-disabled="pendingRequests >= 1">ADD ROOM TO CRUISE CART</button>
&#13;
&#13;
&#13;

这是我的代码:

driver.FindElement(By.CssSelector("button[data-ng-click^='addRoom']")).Click();

它总是抛出这个错误:

  

OpenQA.Selenium.ElementNotVisibleException:元素当前不可见,因此可能无法与

进行交互

Selenium WebDriver是否与angular JS兼容?

3 个答案:

答案 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();