使用selenium进行简单测试HTMLUnitDriver不能正常工作,是不是错了?

时间:2017-09-15 08:22:51

标签: java selenium selenium-webdriver htmlunit-driver

我是硒的初学者,我正在做一个测试,但我不明白为什么它不起作用。 这是我的代码和以下错误。

 import org.openqa.selenium.*;
 import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.WebElement;
 import org.openqa.selenium.htmlunit.HtmlUnitDriver;
 public class PruebaHTMLUnit {
    public static void main(String[] args) {

WebDriver driver = new HtmlUnitDriver();
driver.get("http://www.google.com");
WebElement element = driver.findElement(By.name("q"));
element.sendKeys("Guru99");
element.submit();
System.out.println("Page title is: " + driver.getTitle());

driver.quit();
}
}

错误:

Build info: version: '3.5.2', revision: '10229a9', time: '2017-08-21T17:29:55.15Z'
System info: host: 'MVILLEGAS764', ip: '169.254.106.219', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version:
     

' 1.8.0_144'       驱动程序信息:driver.version:HtmlUnitDriver         在org.openqa.selenium.htmlunit.HtmlUnitDriver.findElementByName(HtmlUnitDriver.java:1293)         在org.openqa.selenium.By $ ByName.findElement(By.java:303)         在org.openqa.selenium.htmlunit.HtmlUnitDriver $ 4.call(HtmlUnitDriver.java:1970)         在org.openqa.selenium.htmlunit.HtmlUnitDriver $ 4.call(HtmlUnitDriver.java:1)         在org.openqa.selenium.htmlunit.HtmlUnitDriver.implicitlyWaitFor(HtmlUnitDriver.java:1606)         在org.openqa.selenium.htmlunit.HtmlUnitDriver.findElement(HtmlUnitDriver.java:1966)         在org.openqa.selenium.htmlunit.HtmlUnitDriver.findElement(HtmlUnitDriver.java:754)         在com.villegas.pruebas.PruebasRegresion.PruebaHTMLUnit.main(PruebaHTMLUnit.java:20)

3 个答案:

答案 0 :(得分:0)

import org.openqa.selenium.*;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.htmlunit.HtmlUnitDriver;

    public class test_Stackoverflow
    {
            public static void main(String[] args) {
                       WebDriver driver = new HtmlUnitDriver();
                driver.get("https://www.google.com");
                WebElement element = driver.findElement(By.xpath(".//*[@id='gs_htif0']"));
                element.sendKeys("Guru99");
                element.submit();
                System.out.println("Page title is: " + driver.getTitle());
                driver.quit();
            }
    }

HtmlUnitDriver是Selenium 2.53版的一部分。如果您使用的是Selenium 2.52或更早版本,则不需要下载和安装HtmlUnitDriver,它已经存在。

但是你仍然想用它从这里下载

https://github.com/SeleniumHQ/htmlunit-driver/releases

从2.53版本开始,您需要单独添加

查看此图片Image of result

试试这个:

<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-htmlunit-driver -->
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-htmlunit-driver</artifactId>
    <version>2.52.0</version>
</dependency>

答案 1 :(得分:0)

请尝试这个希望它能起作用

 import org.openqa.selenium.*;
 import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.WebElement;
 import org.openqa.selenium.htmlunit.HtmlUnitDriver;
    /**
     * Created by W3E64 on 9/15/2017.
     */
    public class testing_solution
    {
public static void main(String[] args) {
                java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(java.util.logging.Level.OFF);
                java.util.logging.Logger.getLogger("org.apache.http").setLevel(java.util.logging.Level.OFF);
 HtmlUnitDriver unitDriver = new HtmlUnitDriver();

 unitDriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
 unitDriver.get("http://google.com");
 System.out.println("Title of the page is -> " + unitDriver.getTitle());

 WebElement searchBox = unitDriver.findElement(By.name("q"))
 searchBox.sendKeys("Selenium");
 WebElement button = unitDriver.findElement(By.name("btnG"));
 button.click();
 System.out.println("Title of the page is -> " + unitDriver.getTitle());
            }
    }

答案 2 :(得分:0)

您可以点击Google搜索按钮,也可以在搜索框中输入Enter键,而不是使用Submit()方法。我试过运行上面的代码,它工作正常。我正在将Selenium 3.141.59与HtmlUnitDriver 2.36.0一起使用。 HtmlUnitDriver的行为随版本而变化。第二种方法简单得多,我个人更喜欢:

element.sendKeys(Keys.ENTER);

写这个而不是提交,它将正常工作。