我正在使用Selenium WebDriver并遇到问题。
在UI中,WebDriver可以看到元素,但无法执行任何操作,例如click,type,select等。元素由selenium找到并作为webelement实例返回。我可以得到,getText(),isEnabled()等,但不会执行任何操作。没有例外。它只是挂起。
我不明白这种行为。如果WebDriver看到它,它应该单击。我尝试过使用动作。这也表现出相同的行为。
如何调试此问题?有什么想法吗?
答案 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;
}