【问题标题】:How to Debug Selenium WebDriver Actions?如何调试 Selenium WebDriver 操作?
【发布时间】:2011-11-23 16:02:40
【问题描述】:

我正在使用 Selenium WebDriver 并遇到了问题。

在 UI 中,WebDriver 可以看到元素,但无法执行任何操作,例如单击、键入、选择等。元素由 selenium 找到并作为 webelement 的实例返回。我可以得到 getText()、isEnabled() 等,但不会执行任何操作。没有例外。它只是挂起。

我不明白这种行为。如果 WebDriver 看到它,它应该单击。我尝试过使用动作。这也显示了相同的行为。

如何调试这个问题?有什么想法吗?

【问题讨论】:

    标签: webdriver selenium-webdriver


    【解决方案1】:

    小提示:WebDriver 可以找到页面上被 CSS “隐藏”的元素。

    这些项目已找到,但不可点击(或任何其他操作)。

    尝试调用方法isDisplayed();

    【讨论】:

      【解决方案2】:

      调试代码的唯一方法是围绕 WebDriverEventListener 编写包装器并监听日志。否则是不可能的。

      【讨论】:

      • 你有这方面的代码吗?我对包装器以及如何在 Selenium 2 WebDriver 中设置日志非常感兴趣。
      • @MacGyver,从 webdriver 2.15.0 开始,引入了日志记录。所以,我认为没有必要为此编写代码。甚至您可以设置日志级别。尝试最新版本。
      • 我想出了如何在不使用此包装器的情况下在 Visual Studio 中执行此操作。有关详细信息,请参阅我的答案。
      • 这个答案已经过时了。 Selenium 现在带有非常有用的调试输出。看我的回答
      【解决方案3】:

      如果您使用 Nunit 和 C# 客户端驱动程序,您可以通过转到工具 > 附加到进程 > 选择“nunit-agent.exe”> 附加来将 Visual Studio 附加到您的 nunit-agent.exe 进程。

      在使用 JUnit 和 Java 客户端驱动程序时,您可以通过附加到 Eclipse 中的 nunit-agent.exe 进程来执行相同的操作。

      ============

      回答您的其他问题...

      1.) 您可能需要为驱动程序打开本机事件才能看到 JavaScript 事件。

      2.) 我还发现了一些使用 WebDriver 获取/设置值的软件错误。尝试使用这些来获取您在问题中解释的 InnerHtml(又名 getText)。这是 .NET 4.0 代码..所以您可能需要适当地修改它。这些在我的 Element 类中,因此嵌套元素调用上的“Element”前缀。

      public static int GetInnerHtmlByXPathTypeInt(IWebDriver driver, string xpath)
      {
          return int.Parse(Element.GetInnerHtmlByXpath(driver, xpath));
      }
      public static double GetInnerHtmlWithoutDollarSignByXPath(IWebDriver driver, string xpath)
      {
          return double.Parse(Element.GetInnerHtmlByXpath(driver, xpath).Replace("$", string.Empty));
      }
      
      public static string GetValueByXPath(IWebDriver driver, string xpath)
      {
          return driver.FindElement(By.XPath(xpath)).GetAttribute("value");
      }
      
      public static string GetInnerHtmlByXpath(IWebDriver driver, string xpath)
      {
          return driver.FindElement(By.XPath(xpath)).Text;
      }
      

      【讨论】:

        猜你喜欢
        • 2018-05-22
        • 2016-12-15
        • 2014-07-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-29
        • 2018-12-14
        • 2014-08-28
        相关资源
        最近更新 更多