我是第一次尝试硒,我有一个简单的问题。当我在click()
上调用WebElement
方法时,我注意到它是void
类型的方法。那么HtmlUnitDriver
是否保留click()
发生后呈现的更新页面?
答案 0 :(得分:0)
是。 WebDriver
界面正在控制浏览器,但它仍然是浏览器(在您的情况下,HtmlUnit)完成大部分工作并记住页面状态等。
因此,WebDriver
本身并不具有某种状态(过于简化的陈述,但对您的目的而言却是如此)。当您发送click()
命令时,它会在浏览器中执行,而不是等待浏览器完成其作业(加载新页面),然后再次等待新页面上的命令。
WebDriver
始终根据浏览器当前的内容进行操作。
答案 1 :(得分:0)
我可以从您的问题中看到您正在使用HtmlUnitDriver。默认情况下,此驱动程序禁用JavaScript(解释click here)。此驱动程序使用Rhino JavaScript引擎,并未在任何流行的浏览器中使用。这可能解释了为什么您尝试的操作在Firefox中正常工作,但在Selenium中却没有。
您可以尝试在HtmlUnit中启用JavaScript,如下所示:
HtmlUnitDriver driver = new HtmlUnitDriver();
driver.setJavascriptEnabled(true);
但我推荐使用FirefoxDriver。
WebDriver driver = new FirefoxDriver();
这应该模仿您在自己浏览网页时看到的行为。