返回值无法转换为WebElement

时间:2018-05-22 20:33:59

标签: appium appium-ios

我使用Appium进行iOS自动化测试,我收到此错误

返回的值无法转换为WebElement // * [@ text ='搜索结果']

Appium Java客户端版本:6.0.0-BETA5

降级Java客户端对我来说不是一个选项,因为我使用的是最新测试版的一些方法。

try {
        MobileElement titleView = navigationBar.findElement(By.xpath("//*[@text='" + title + "']"));
        return titleView.isDisplayed();
    }

更新:

我在我的gradle中添加了硒,如下所示:

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.0'
implementation 'io.appium:java-client:6.0.0-BETA5'
implementation 'org.seleniumhq.selenium:selenium-server:3.9.1'

implementation "com.google.code.gson:gson:2.8.2"
implementation 'com.squareup.retrofit2:retrofit:2.4.0'
implementation 'com.squareup.retrofit2:converter-gson:2.4.0'

compileOnly 'org.projectlombok:lombok:1.16.20'
annotationProcessor 'org.projectlombok:lombok:1.16.20'

testImplementation 'junit:junit:4.12'
}

但是在运行测试时,我仍然会收到错误消息。这里的构建版本是3.11.0。那是Selenium吗?这里有什么正确的方法?

    org.openqa.selenium.WebDriverException: Returned value cannot be converted to WebElement: //*[@text='Search Results']
Build info: version: '3.11.0', revision: 'e59cfb3', time: '2018-03-11T20:26:55.152Z'
System info: host: 'USGPSNYCM212943.local', ip: 'fe80:0:0:0:462:ed8d:f2e4:f85d%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.13.4', java.version: '1.8.0_152-release'
Driver info: driver.version: unknown

5 个答案:

答案 0 :(得分:1)

您好请使用以下依赖项:

  <!-- https://mvnrepository.com/artifact/io.appium/java-client -->
        <dependency>
            <groupId>io.appium</groupId>
            <artifactId>java-client</artifactId>
            <version>6.0.0-BETA5</version>
        </dependency>
 <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-server -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-server</artifactId>
            <version>3.9.1</version>
        </dependency> 

这可以解决您的问题,即使我在使用不同的selenium服务器版本时遇到类似的问题。

答案 1 :(得分:0)

我在这个问题上苦苦挣扎了几天。我尝试了在各种论坛上提到的所有解决方案,例如升级或降级appium版本等。最后,通过在驱动程序对象上添加5秒的简单隐式等待,解决了该问题。如果您遇到此问题,请尝试一下。

答案 2 :(得分:0)

如果现在有人看到此消息,则WebElement搜索取决于您使用的驱动程序。

如果使用AndroidDriver,则将通用类型称为 AndroidDriver驱动程序; driver = new AndroidDriver(new URL(“ http://127.0.0.1:4723/wd/hub”),功能);

如果使用appiumDriver,则将通用类型称为 AppiumDriver驱动程序; driver = new AndroidDriver(new URL(“ http://127.0.0.1:4723/wd/hub”),功能);

希望有帮助!

答案 3 :(得分:0)

在“所需功能”中添加以下其他功能,然后即可使用:

capability.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT, "60");

答案 4 :(得分:0)

我正在使用

Appium-windows-1.13.0
java-client-5.0.0-BETA6

我已将其更新为

Appium-windows-1.15.1
java-client-6.0.0-BETA4

成功了