为什么Selenium HtmlUnit或PhamtonJs在执行Js代码时遇到一些麻烦

时间:2016-05-30 12:13:54

标签: javascript java selenium htmlunit-driver

我试图在无头浏览器(htmlUnit WebdriverphamtomJs)中运行我的硒测试。但无论我使用什么,javascript代码的执行会引发一些异常,或者当我尝试使用将在html页面中使用javascript的事件进行测试时出现错误。

我无法理解为什么它无法正常工作。

这是我正在尝试的脚本:

public class Test {
static WebDriver driver;
static Wait<WebDriver> wait;
public static void main(String[] args) {
//      File file = new File("C:/phantomjs-2.1.1-windows/bin/phantomjs.exe");             
//      System.setProperty("phantomjs.binary.path", file.getAbsolutePath());
//      DesiredCapabilities caps = new DesiredCapabilities();
//      caps.setJavascriptEnabled(true);
//      driver = new PhantomJSDriver(caps);
    driver = new HtmlUnitDriver(true);//true to enable the JS
    wait = new WebDriverWait(driver, 3000);
    final String url = "https://localhost:8444/myApp/";

    JavascriptExecutor js = (JavascriptExecutor) driver;

    try {
        driver.navigate().to(url);
        js.executeScript("document.getElementsByName('formLogin')[0].checked = true;");
        By usernameInput = By.xpath("//input");
        By passwordInput = By.xpath("//div[2]/div/div/input");
        By submitButton = By.xpath("//a[contains(@href, '#')]");

        wait.until(ExpectedConditions.visibilityOfElementLocated(usernameInput));
        wait.until(ExpectedConditions.visibilityOfElementLocated(passwordInput));
        wait.until(ExpectedConditions.visibilityOfElementLocated(submitButton));

        WebElement log = driver.findElement(usernameInput);
        WebElement pass = driver.findElement(passwordInput);
        WebElement click = driver.findElement(submitButton);

        log.sendKeys("root");
        pass.sendKeys("pass");
        click.click();

        By headerId = By.className("header");

        wait.until(ExpectedConditions.visibilityOfElementLocated(headerId));


        System.out.println("Page title is: " + driver.getTitle()); 
        String var = (String) js.executeScript("var truc = 'bonjour'; return truc;");
        System.out.println(var);
    } finally  {
        driver.close();
    }

}

Fot这个我有多个:

  

ReferenceError:&#34; xxx&#34;没有定义。 (urlOfmyAPp / JSP / ihm.js?TS = 0.1975212200823856#1451)

其中xxx为javascript元素。

我有这个脚本的另一个版本但是使用firefox WebDriver,它运行良好。但我不明白为什么它不使用htmlUnitDriver

有人可以解释为什么会失败吗?感谢。

0 个答案:

没有答案