HTMLUnitDriver 在 Selenium Automation Testing 中返回错误,ChromeDriver 不会



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

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

当我将密钥发送到元素时,它会抛出错误。

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: You 只能 与可见元素交互

我用ChromeDriver尝试了同样的方法。它工作正常!它没有引发此异常。但是我无法使用其中的无头选项。

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

返回

线程"main"org.openqa.selenium.TimeoutException中的异常: 预期条件失败:等待元素的存在,位于: By.xpath://input[@id="用户名"] (用 500 尝试 3 秒 毫秒间隔)

工作正常,仅当初始化chromeDriver时未定义chromeOptions时。

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

请指导我这些情况可能是什么/建议替代方案?

根据文档,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");  

尝试此代码并让我知道状态。

相关内容

最新更新