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