1

我们正在使用 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。任何人都可以帮忙吗?

4

1 回答 1

0

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

已通过 qaf-2.1.12-RC2 解决

于 2017-07-11T05:06:40.307 回答