【问题标题】:How do I find elements hidden by knockout with Selenium如何找到被 Selenium 淘汰的元素
【发布时间】:2019-01-21 02:03:49
【问题描述】:

我在用户门户中有一个“注销”按钮,但我无法抓取。 前端是knockout.js,测试框架是Selenium。

现在我可以通过 ID 获取许多元素,但不能通过这个注销按钮。 网上的很多帮助都已经过时了,我实在没办法了。

<button name="logout" class="btn btn-primary" data-action="userLogout" data-bind="click: logout" data-i18n="app:modules.localization.generals.button.logout">Abmelden</button>

这是按钮的源代码。

例如,如果我执行这段代码

webDriver.FindElement(By.Id("logout")).Click();

我收到这条消息

消息:测试方法 MyFirstAutomaticTest.UnitTest1.StartPage 抛出异常: System.InvalidOperationException:无法点击元素(MoveTargetOutOfBounds)

有人可以帮我吗?

【问题讨论】:

    标签: selenium selenium-webdriver xpath css-selectors webdriver


    【解决方案1】:

    根据您分享给 click()HTML 元素,文本为 Abmelden,您可以使用以下任一解决方案:

    • cssSelector:

      webDriver.FindElement(By.CssSelector("button.btn.btn-primary[data-action='userLogout']")).Click();
      
    • xpath:

      webDriver.FindElement(By.XPath("//button[@class='btn btn-primary' and @data-action='userLogout']")).Click();
      

    注意:由于该元素是 Angular 元素,您必须诱导 WebDriverWait 以使所需的元素可点击

    【讨论】:

      【解决方案2】:

      你有绑定名称属性作为ID,

      试试这个,

      webDriver.FindElement(By.name("logout")).Click();
      

      【讨论】:

        【解决方案3】:

        试试 xpath

        webDriver.FindElement(By.Xpath("//button[text()='Abmelden']")).Click();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-01-25
          • 1970-01-01
          • 1970-01-01
          • 2012-04-20
          • 2014-01-10
          • 1970-01-01
          • 2023-03-09
          • 2016-05-14
          相关资源
          最近更新 更多