在Selenide + Appium上找不到输入元素的元素

时间:2018-04-11 15:54:52

标签: kotlin appium selenide

我正在使用Kotlin + Selenide + Appium编写Android Web自动化测试。已经在Kotlin + Selenide上运行了那些测试的桌面Web版本。

Koltin 1.2.31 Selenide:4.11.1 Appium:java-client:5.0.4 Appium: 1.7.2

测试开始,appium服务器启动,我的设备上的浏览器启动,页面打开,元素已找到,但它不能setValue。除了输入元素和操作之外,测试工作正常。

在测试中,我首先清除该字段,然后为其设置值。它实际上找到了元素,清除它然后在该步骤上抛出错误(清除字段)。所以它清除了该领域,但它也找不到它? 出现的错误:

Element not found {.project-scope-main-header-content-input > div > input} Expected: exist

Caused by: WebDriverException: unknown error: call function result missing 'value'

我尝试使用和不使用这两项功能来运行测试:

capa.setCapability("unicodeKeyboard", true)

capa.setCapability("resetKeyboard", true)

感谢任何帮助。谢谢。

编辑:问题出在过时的ChromeDriver中,由于某些原因我无法更新。

编辑#2: 这是我如何初始化它: `

lateinit var driver: AppiumDriver<SelenideElement>
private val appiumServer = AppiumRunAndStop()

@BeforeClass
@Parameters("platform")
fun setUp(platform : String) {
    appiumServer.restartServer()
    when (platform) {
        "Android" -> {
            val capa = DesiredCapabilities()
            capa.setCapability("automationName", "Appium")
            //capa.setCapability("newCommandTimeout", 150)
            capa.setCapability("platformName", "Android")
            capa.setCapability("platformVersion", "8.1.0")
            capa.setCapability("deviceName", "Nexus 6P")
            capa.setCapability("browserName", "Chrome")
            capa.setCapability("unicodeKeyboard", true)
            capa.setCapability("resetKeyboard", true)
            capa.setCapability("chromedriverExecutable", "pathh\\chromedriver_win32\\chromedriver.exe")
            driver = AppiumDriver(URL("http://127.0.0.1:4723/wd/hub"), capa)
            sleep(2000)
            WebDriverRunner.setWebDriver(driver)

        }
        "iOS" -> {
            //TO DO
        }
        else -> println("Platform is not correct")
    }
    Configuration.baseUrl = "my_url"
}`

它适用于此capa.setCapability("chromedriverExecutable", "pathh\\chromedriver_win32\\chromedriver.exe"),但我希望它能自动对ChromeDriver进行自动更新。

2 个答案:

答案 0 :(得分:1)

您是否尝试使用element.sendKeys("your value")方法输入值,element.clear()是否要清除元素中的文字?

这种方法适合我。另外,请避免使用Beta版的Appium Java客户端,并始终使用5.0.4的稳定版本。

答案 1 :(得分:0)

我发现了问题。我的测试使用过时的ChromeDriver(chromedriver = 2.33.506120)。

我不知道如何为此测试更新它。 WebDriverManager.chromedriver().version("2.37").setup()无济于事。  System.setProperty("webdriver.chrome.driver","path\\chromedriver_win32\\chromedriver.exe")要么没有帮助。

我也试过这样做:

val options = ChromeOptions()
options.addArguments("androidPackage", "com.android.chrome")
capa.setCapability(ChromeOptions.CAPABILITY, options)`

编辑:使用capa.setCapability("chromedriverExecutable", "PATH"),但为什么Selenide不会自行更新ChromeDriver?