目标:使用无头选项对登录页面进行硒测试。(HTMLUnitDriver优先)
我正在尝试使用HTMLUnitDriver自动登录到一个站点。
当我sendKeys到一个元素时,它会抛出一个错误。
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);
返回,
线程“主”org.openqa.selenium.TimeoutException中的异常:预期条件失败:等待由: By.xpath: //input@id="username"定位的元素的存在
只有在初始化chromeOptions时未定义chromeDriver时,才能正常工作。
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--headless");
WebDriver driver = new ChromeDriver();
请指导我,这些情景可以是什么/建议一个替代方案?
发布于 2018-04-15 14:30:53
根据文档,ElementNotInteractableException是W3C异常,它表明尽管DOM树上存在一个元素,但它并不处于可以与之交互的状态。
您可以尝试的代码是:
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");
试一试这段代码,然后告诉我状态。
https://stackoverflow.com/questions/49840226
复制相似问题