代码不编译不同的PC Selenium

时间:2015-03-12 01:17:17

标签: java selenium selenium-webdriver

我有一个完美运行的自动化脚本。 但是当我将脚本复制到我的同事时,下面的代码行不会编译并产生以下错误。

wait.until(ExpectedConditions.textToBePresentInElement(oq.findElement("_ctl0_ContentPlaceHolder1_industryQB_selectedIndustryLabel"), "F461300 Computer Wholesaling"));

错误

Error:(231, 13) java: no suitable method found for until(org.openqa.selenium.support.ui.ExpectedCondition<org.openqa.selenium.WebElement>)
method org.openqa.selenium.support.ui.FluentWait.until(com.google.common.base.Predicate<org.openqa.selenium.WebDriver>) is not applicable
  (argument mismatch; org.openqa.selenium.support.ui.ExpectedCondition<org.openqa.selenium.WebElement> cannot be converted to com.google.common.base.Predicate<org.openqa.selenium.WebDriver>)
method org.openqa.selenium.support.ui.FluentWait.<V>until(com.google.common.base.Function<? super org.openqa.selenium.WebDriver,V>) is not applicable
  (cannot infer type-variable(s) V
    (argument mismatch; org.openqa.selenium.support.ui.ExpectedCondition<org.openqa.selenium.WebElement> cannot be converted to com.google.common.base.Function<? super org.openqa.selenium.WebDriver,V>))

以下是我所做的步骤。 安装IDE(intellj Idea),将jdk添加到项目中,将selenium jar添加到项目中。 复制并粘贴Java文件。

我甚至尝试过复制整个项目,除了这个方法之外,每个方法都已解决。

该脚本在我的机器上仍能正常运行。但不是在新机器上。

如果不清楚,请随时问我任何问题。

我现在没有想法了。

1 个答案:

答案 0 :(得分:2)

根据documentation textToBePresentInElement 已弃用。您可能使用的旧版本不会弃用,而您的同事使用最新版本的Selenium

使用textToBePresentInElementLocated(By, String)代替

修改 而且,我不确定如何

wait.until(ExpectedConditions.textToBePresentInElement(oq.findElement("_ctl0_ContentPlaceHolder1_industryQB_selectedIndustryLabel"), "F461300 Computer Wholesaling"));

将编译。参数

ExpectedConditions.textToBePresentInElement(By , String)

预计 ByString 。您正尝试传递WebElement而不是By选择器。此外,findElement()不接受String,但某些By选择器对我来说也是错误的。

正确实施:public static ExpectedCondition<java.lang.Boolean> textToBePresentInElement(By locator, java.lang.String text)