难以在包含HtmlUnitDriver的selenium webdriver中运行脚本

时间:2016-07-07 13:59:46

标签: selenium selenium-webdriver htmlunit-driver

我无法运行包含HtmlUnitDriver的基本selenium脚本。如果我尝试运行代码,我会收到以下错误。

代码:

public class SampleUnitDriver  
{   
    public static void main(String[] args) throws Exception 
    {
        HtmlUnitDriver unitDriver = new HtmlUnitDriver(); 

        unitDriver.get("http://google.com");

        System.out.println("Title of the page is -> " + unitDriver.getTitle());             

        Thread.sleep(3000L);
        WebElement searchBox = unitDriver.findElement(By.className("gsfi"));

        searchBox.sendKeys("Selenium");             

        WebElement button = unitDriver.findElement(By.name("gbqfba"));

        button.click();

        System.out.println("Title of the page is -> " + unitDriver.getTitle());

    } 
}

错误:

    Title of the page is -> Google
Exception in thread "main" org.openqa.selenium.NoSuchElementException: Returned node was not a DOM element
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.53.0', revision: '35ae25b1534ae328c771e0856c93e187490ca824', time: '2016-03-15 10:43:46'
System info: host: 'user-PC', ip: '192.168.1.52', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_51'
Driver info: driver.version: SampleUnitDriver
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.findElementByCssSelector(HtmlUnitDriver.java:1060)
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.findElementByClassName(HtmlUnitDriver.java:1032)
    at org.openqa.selenium.By$ByClassName.findElement(By.java:391)
    at org.openqa.selenium.htmlunit.HtmlUnitDriver$5.call(HtmlUnitDriver.java:1725)
    at org.openqa.selenium.htmlunit.HtmlUnitDriver$5.call(HtmlUnitDriver.java:1721)
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.implicitlyWaitFor(HtmlUnitDriver.java:1367)
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.findElement(HtmlUnitDriver.java:1721)
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.findElement(HtmlUnitDriver.java:606)
    at com.digitalmqc.automation.action.SampleUnitDriver.main(SampleUnitDriver.java:16)

1 个答案:

答案 0 :(得分:0)

输入框的类名gsfi由javascript生成,因此您有2个选项:

Easy One:只需使用ID lst-ib

选择它即可

更好的一个:等待元素完全交互。这个更好的原因是你试图在javascript扮演角色的框中输入文本。前一个选项可能会引发一些意外错误。