在 Selenide + Appium 上找不到输入元素的元素
Element not found for Input elements on Selenide + Appium
我正在编写 Android 使用 Kotlin+Selenide+Appium 的 Web 自动化测试。这些测试的桌面 Web 版本已经在 Kotlin+Selenide 上运行。
Koltin 1.2.31
Selenide:4.11.1
Appium:java-client:5.0.4
Appium: 1.7.2
测试开始,appium 服务器启动,我设备上的浏览器启动,页面打开,找到元素,但它不能 setValue
。除了 Input 元素和对它的操作之外,测试运行良好。
在测试中,我先清空这个字段,然后再给它赋值。它实际上找到了元素,将其清除,然后在该步骤中抛出错误(清除字段)。所以它清除了字段但它也找不到它???
出现的错误:
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。
您是否尝试过使用 element.sendKeys("your value")
方法输入值并使用 element.clear()
清除元素中的文本?
这种方法对我有用。还要避免使用 Appium Java 客户端的 beta 版本,并始终使用 5.0.4.
的稳定版本
我发现了问题。我的测试使用过时的 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?
我正在编写 Android 使用 Kotlin+Selenide+Appium 的 Web 自动化测试。这些测试的桌面 Web 版本已经在 Kotlin+Selenide 上运行。
Koltin 1.2.31
Selenide:4.11.1
Appium:java-client:5.0.4
Appium: 1.7.2
测试开始,appium 服务器启动,我设备上的浏览器启动,页面打开,找到元素,但它不能 setValue
。除了 Input 元素和对它的操作之外,测试运行良好。
在测试中,我先清空这个字段,然后再给它赋值。它实际上找到了元素,将其清除,然后在该步骤中抛出错误(清除字段)。所以它清除了字段但它也找不到它??? 出现的错误:
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。
您是否尝试过使用 element.sendKeys("your value")
方法输入值并使用 element.clear()
清除元素中的文本?
这种方法对我有用。还要避免使用 Appium Java 客户端的 beta 版本,并始终使用 5.0.4.
的稳定版本我发现了问题。我的测试使用过时的 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?