关于更新到Selenium的ClassCastException 3.4

时间:2017-07-11 00:43:43

标签: java selenium webdriver qaf

我们正在使用QAF进行功能测试自动化。我们最近将selenium版本从3.3.1升级到3.4.0,并且在某些地方开始出现以下错误。

Caused by: java.lang.ClassCastException: org.openqa.selenium.remote.RemoteWebElement cannot be cast to com.qmetry.qaf.automation.ui.webdriver.QAFExtendedWebElement
at com.qmetry.qaf.automation.ui.webdriver.QAFExtendedWebDriver.findElementByCssSelector(QAFExtendedWebDriver.java:366)
at com.qmetry.qaf.automation.ui.webdriver.QAFExtendedWebDriver.findElementByCssSelector(QAFExtendedWebDriver.java:1)
at org.openqa.selenium.By$ByCssSelector.findElement(By.java:430)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:402)
at com.qmetry.qaf.automation.ui.webdriver.QAFExtendedWebDriver.findElement(QAFExtendedWebDriver.java:169)
at com.qmetry.qaf.automation.ui.webdriver.QAFExtendedWebDriver.findElement(QAFExtendedWebDriver.java:1)
at org.openqa.selenium.support.ui.ExpectedConditions.findElement(ExpectedConditions.java:895)
at org.openqa.selenium.support.ui.ExpectedConditions.access$000(ExpectedConditions.java:41)
at org.openqa.selenium.support.ui.ExpectedConditions$6.apply(ExpectedConditions.java:181)
at org.openqa.selenium.support.ui.ExpectedConditions$6.apply(ExpectedConditions.java:178)
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:238)

我的观察是,如果我们没有driver.findBy(BY)语句,它可以正常工作。为了测试目的,我在一个地方尝试了driver.findBy(String)而不是driver.findBy(BY),它运行正常。但我不知道团队使用了多少方法。

以下是重现错误的测试:

@Test
    public void test1() {
        get("/");
        QAFExtendedWebDriver driver = getDriver();
        driver.findElement(By.name("q")).sendKeys("do something");
    }

由于这个问题,我们必须恢复selenium版本3.3.1。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

这是因为其中一个selenium类的方法可见性发生了变化。它可能会在下一版本中由fix-4279解决。

用qaf-2.1.12-RC2

解决