如何调试Selenium WebDriver操作?

时间:2011-11-23 16:02:41

标签: webdriver selenium-webdriver

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

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

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

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

3 个答案:

答案 0 :(得分:4)

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

找到了这些项目,但无法点击(或任何其他操作)。

尝试调用方法isDisplayed();

答案 1 :(得分:2)

调试代码的唯一方法是在WebDriverEventListener周围编写包装器并监听日志。其他方面,这是不可能的。

答案 2 :(得分:0)

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

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

===========

回答你的其他问题......

1。)您可能需要为您的驱动程序启用本机事件才能查看JavaScript事件。

2。)我还发现WebDriver的一些软件错误用于获取/设置值。尝试使用这些来获取您在问题中解释的InnerHtml(aka 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;
}