使用 selenium HTMLUnitDriver 进行简单测试无法正常工作,是错误的吗?

问题描述 投票:0回答:3

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

 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)

java selenium selenium-webdriver htmlunit-driver
3个回答
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>

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());
            }
    }

0
投票

不要使用 Submit() 方法,而是单击 google 搜索按钮或在搜索框中输入 Enter 键。我尝试运行上面的代码,效果很好。我正在使用 Selenium 3.141.59 和 HtmlUnitDriver 2.36.0。 HtmlUnitDriver 的行为因版本而异。第二种方法更简单,我个人更喜欢:

element.sendKeys(Keys.ENTER);

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

© www.soinside.com 2019 - 2024. All rights reserved.