HTMLUnitDriver 在 Selenium 自动化测试中返回错误,而 ChromeDriver 没有
HTMLUnitDriver returning error in Selenium Automation Testing which ChromeDriver doesn't
目标:使用 headless 选项对登录页面进行 selenium 测试。(最好使用 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");
错误:
Exception in thread "main"
org.openqa.selenium.ElementNotInteractableException: You may only
interact with visible elements
我对 ChromeDriver 进行了同样的尝试。它工作正常!它没有抛出这个异常。但是我无法使用其中的无头选项。
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--headless");
WebDriver driver = new ChromeDriver(chromeOptions);
returns,
Exception in thread "main" org.openqa.selenium.TimeoutException:
Expected condition failed: waiting for presence of element located by:
By.xpath: //input[@id="username"] (tried for 3 second(s) with 500
milliseconds interval)
只有在初始化 chromeDriver 时未定义 chromeOptions 时才能正常工作。
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--headless");
WebDriver driver = new ChromeDriver();
请指导我这些 scenarios/suggest 可以替代什么?
根据文档,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");
试用此代码并让我知道状态。
目标:使用 headless 选项对登录页面进行 selenium 测试。(最好使用 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");
错误:
Exception in thread "main" org.openqa.selenium.ElementNotInteractableException: You may only interact with visible elements
我对 ChromeDriver 进行了同样的尝试。它工作正常!它没有抛出这个异常。但是我无法使用其中的无头选项。
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--headless");
WebDriver driver = new ChromeDriver(chromeOptions);
returns,
Exception in thread "main" org.openqa.selenium.TimeoutException: Expected condition failed: waiting for presence of element located by: By.xpath: //input[@id="username"] (tried for 3 second(s) with 500 milliseconds interval)
只有在初始化 chromeDriver 时未定义 chromeOptions 时才能正常工作。
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--headless");
WebDriver driver = new ChromeDriver();
请指导我这些 scenarios/suggest 可以替代什么?
根据文档,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");
试用此代码并让我知道状态。