我正在使用最新版本的Selenium和chromedriver
来测试ZK应用程序。
在测试期间,我想转储DOM(或其中的一部分)以帮助我找到我需要的元素(并且可能帮助那些必须维护测试的人)。
方法WebDriver.getPageSource()
看起来很有前途,但它只返回服务器发送的HTML,而不是运行所有JavaScript代码后的结果。
运行JavaScript代码;我可以通过ID找到我在getPageSource()
的输出中看不到的元素。所以我尝试WebElement.getText()
,但这只是元素的文本,而不是元素本身或它们的属性。
是否有可能获得DOM或我是否必须在此进行锁孔手术?
答案 0 :(得分:1)
我真的有同样的问题,但我发现这样做的唯一方法是ExecuteScript:
/// <summary>
/// Gets the parentElement/Node of a particular element
/// </summary>
/// <param name="driver"></param>
/// <param name="element"></param>
/// <returns></returns>
public static IWebElement GetElementParent(IWebDriver driver,IWebElement element)
{
return (IWebElement) ((IJavaScriptExecutor)driver).ExecuteScript("return arguments[0].parentNode", element);
}
为什么By不支持By.DOM的功能我真的不知道...我怀疑它是由于需要为多个浏览器等的webdriver