硒点击一个按钮

硒点击一个按钮

问题描述:

我第一次尝试硒,我有一个快速的问题。当我在WebElement上调用click()方法时,我注意到它是一个void类型的方法。那么HtmlUnitDriver是否会保留click()发生后呈现的更新页面?硒点击一个按钮

+0

不,它只是点击元素,它不包含任何信息。 让我们知道您的确切要求。 – Hemanth 2013-03-02 05:42:58

+0

那么,我试图导航一个网页。那么我怎么会说'点击页面A上的一个按钮',那个动作加载了pageB,点击了pageB上的一个按钮等等。 – user1154644 2013-03-02 23:23:26

是的。 WebDriver界面是控制浏览器,但它仍然是浏览器(在你的情况下,HtmlUnit),做大部分的工作,并记得页面的状态等。

因此,WebDriver这样并不真的有一个状态(过于简化的陈述,但对你的目的而言是真实的)。当您发送click()命令时,它会在浏览器中执行它,而不是等待浏览器完成其作业(加载新页面),然后再次等待新页面上的命令。

WebDriver总是在浏览器目前的功能上运行。

+0

我明白了。所以当我打电话click(),如果这需要我到另一个页面(B),然后当我说driver.findElement(By.id(“无论”)),它会去搜索页面B的那个元素? – user1154644 2013-03-03 00:08:42

+0

@ user1154644是的,确切!另外,找出最好的方法是尝试一下;)。 – 2013-03-03 00:11:18

+0

好吧,就javascript而言,是否有一个原因可以导航到网页并单击几个按钮就可以了,并且获得期望的结果(使用Firefox),但是当我使用Selenium时,出现javascript错误? – user1154644 2013-03-03 00:46:41

我可以从你的问题看到你正在使用HtmlUnitDriver。此驱动程序默认禁用JavaScript(有关说明,请参阅click here)。此驱动程序使用Rhino JavaScript引擎,并未在任何常用浏览器中使用。这也许可以解释为什么您尝试的操作可以在Firefox中正常工作,但不能在Selenium中正常工作。

你可以尝试启用JavaScript中的HtmlUnit如下:

HtmlUnitDriver driver = new HtmlUnitDriver(); 
driver.setJavascriptEnabled(true); 

而是我会建议使用FirefoxDriver。

WebDriver driver = new FirefoxDriver(); 

当你通过网页浏览自己本应该效仿你所看到的行为。