我目前正在使用PhantomJS + Selenium来填充某些表单字段,但结果却很奇怪。 50%的时间,测试运行良好。另外50%它出错并给我以下
{“errorMessage”:“元素目前不可互动,可能不是 操纵“
我正在执行以下操作以确保页面已加载。
private static boolean waitForJQueryProcessing(WebDriver driver, int timeOutInSeconds) { boolean jQcondition = false; try { new WebDriverWait(driver, timeOutInSeconds) { }.until(new ExpectedCondition<Boolean>() { @Override public Boolean apply(WebDriver driverObject) { return (Boolean) ((JavascriptExecutor) driverObject) .executeScript("return jQuery.active == 0"); } }); jQcondition = (Boolean) ((JavascriptExecutor) driver) .executeScript("return window.jQuery != undefined && jQuery.active === 0"); return jQcondition; } catch (Exception e) { logger.debug(e.getMessage()); } return jQcondition; }
然后与元素进行交互:
pageWait.until(ExpectedConditions.presenceOfElementLocated(By
.cssSelector("#myForm-searchDate")));
driver.findElement(
By.cssSelector("#myForm-searchDate"))
.sendKeys(Keys.CONTROL + "a");
driver.findElement(
By.cssSelector("#myForm-searchDate"))
.sendKeys(Keys.DELETE);
driver.findElement(
By.cssSelector("#myForm-searchDate"))
.sendKeys(MY_TEST_DATE);
我可以看到它是否一直失败,但它并不会一直失败,所以在调试时很难重复结果。
编辑1.我已尝试按照以下评论进行交换;但是,它不起作用。我已经意识到这似乎只有在我同时发射几个(5+)个PhantomJS实例时才会发生。