目标:使用无头选项进行登录页面的硒测试。(最好是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();
请指导我可能会出现这些情况/建议替代方案吗?
答案 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");
试用这段代码,让我知道状态。