PhantomJS和Selenium - 在搜索元素时尝试使用wait时遇到问题

时间:2017-03-16 18:48:38

标签: selenium selenium-webdriver phantomjs

我正在尝试在无头浏览器中进行一些测试,以测试填写表单。

我正在使用以下示例中显示的代码:

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">

1 个答案:

答案 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;

我建议你尝试这种方法:

  1. 让网址首先加载。
  2. 定义显式等待。
  3. 直到定义预期的条件。
  4. 获取元素的状态。
  5. Sysout the Status。
  6. 如果失败,请增加显式等待的持续时间以实现预期的条件。
  7. 您可以查看此修改后的代码:

    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");
            }
    

    如果这有助于您,请告诉我。