HTMLUnitDriver在Selenium Automation Testing中返回错误,ChromeDriver没有

时间:2018-04-15 09:01:43

标签: selenium selenium-chromedriver htmlunit-driver

目标:使用无头选项进行登录页面的硒测试。(最好是HTMLUnitDriver)

我正在尝试使用HTMLUnitDriver自动登录网站。

当我将Keys发送给一个元素时,它会抛出一个错误。

HtmlUnitDriver driver = new HtmlUnitDriver();
driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
driver.get("https://bigData/login.jsp");
WebDriverWait usernameWait = new WebDriverWait(driver, 3);
usernameWait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//input[@id=\"username\"]")));
driver.findElement(By.xpath("//input[@id=\"username\"]")).sendKeys("admin");

错误:

  

线程“main”中的异常   org.openqa.selenium.ElementNotInteractableException:您可能只是   与可见元素交互

我尝试使用ChromeDriver。它工作正常!它没有抛出这个例外。但我不能在其中使用无头选项。

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--headless");
WebDriver driver = new ChromeDriver(chromeOptions);

返回,

  

线程“main”中的异常org.openqa.selenium.TimeoutException:   预期条件失败:等待位于以下位置的元素的存在:   By.xpath://输入[@ id =“username”](尝试3秒,500秒   毫秒间隔)

只有在初始化chromeDriver时未定义chromeOptions时才能正常工作。

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--headless");
WebDriver driver = new ChromeDriver();

请指导我可能会出现这些情况/建议替代方案吗?

1 个答案:

答案 0 :(得分:1)

根据文档, ElementNotInteractableException 是W3C异常,抛出该异常表示虽然DOM TREE上存在一个元素,但它不处于可以与之交互的状态。

您可以尝试

代码

HtmlUnitDriver driver = new HtmlUnitDriver(BrowserVersion.CHROME ,true);
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get("https://bigData/login.jsp");
WebDriverWait usernameWait = new WebDriverWait(driver, 30);
usernameWait.until(ExpectedConditions.visibiltyOfElementLocated(By.xpath("//input[@id=\"username\"]")));
usernameWait.until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@id=\"username\"]")));
driver.findElement(By.xpath("//input[@id=\"username\"]")).sendKeys("admin");  

试用这段代码,让我知道状态。