我正在尝试在无头浏览器中进行一些测试,以测试填写表单。
我正在使用以下示例中显示的代码:
github link to example of using phantomjs
我的代码:
WebDriverWait wait = new WebDriverWait(driver, 30);
driver.get("<URL HERE, left out for privacy on stack overflow!>");
By amount = By.id("amountField");
wait.until(ExpectedConditions.presenceOfElementLocated(amount));
intelliJ中的错误:
until(java.util.function<? super org.openqa.selenium.WebDriver, V) in FluentWait cannot be applied to :
(org.openqa.selenium.support.ui.ExpectedCondition<org.openqa.selenium.WebElement>)
我不确定我在哪里出错 - 但我花了两个小时试图解决这个问题。
我想在页面上找到元素:
<input name="amount0" id="amountField" value="" class="amount form-control" type="number" pattern="\d+(\.\d*)?" maxlength="10" placeholder="Amount">
答案 0 :(得分:1)
似乎问题不在于PhantomJS。你看到的错误告诉了一切。
您的代码似乎将WebDriverWait wait
视为流利的等待,因为您导出错误导致import org.openqa.selenium.support.ui.ExpectedConditions;
。
在文档中,作者还使用了显式等待导入import org.openqa.selenium.support.ui.ExpectedConditions;
和import org.openqa.selenium.support.ui.WebDriverWait;
我建议你尝试这种方法:
您可以查看此修改后的代码:
driver.get("<URL HERE, left out for privacy on stack overflow!>");
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("amountField")));
boolean status=element.isDisplayed();
if (status)
{
System.out.println("Element is displayed");
}
else
{
System.out.println("Element is not displayed");
}
如果这有助于您,请告诉我。