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