无法在使用 Appium 的 iOS 本机应用程序的 webview 页面上找到元素 [英] Can't find an element on a webview page of an iOS native app using Appium
问题描述
我有一个本机应用程序,可以打开几个网页视图页面.我在应用程序上运行 appium 以在我需要向下滚动以找到用户名和密码字段的 web 视图页面上进行一些自动化测试.我尝试了所有可以在网上找到的建议,但它不起作用.任何人都可以帮忙吗?我在跑:Appium v1.3.5iOS 8.1
I have a native app which opens few web-view pages. I'm running appium on the app to do some automation test on a web-view page that I need to scroll down to find the username and password fields. I tried all the suggestion I can find online, and it doesn't work. Can anyone help? I'm running: Appium v1.3.5 iOS 8.1
这是我的代码:
// switch to webview
Thread.sleep(6000);
final Set<String> contextNames = driver.getContextHandles();
for (final String contextName : contextNames) {
System.out.println(contextName);
if (contextName.contains("WEBVIEW")) {
driver.context(contextName);
}
}
Thread.sleep(6000);
WebElement x = driver.findElement(By.cssSelector("Username *"));
assertTrue(x.isDisplayed());
这是我尝试滚动到的元素并输入用户名
Here is the element I try to scroll to and enter username
<AppiumAUT>
<UIAApplication name="Demo A" label="Demo A" value="" dom="" enabled="true" valid="true" visible="true" hint="" path="/0" x="0" y="24.125" width="375" height="642.1875">
<UIAWindow name="" label="" value="" dom="" enabled="true" valid="true" visible="true" hint="" path="/0/2" x="0" y="0.6875" width="375" height="665.625">
<UIAScrollView name="" label="" value="" dom="" enabled="true" valid="true" visible="true" hint="" path="/0/2/1" x="29.296875" y="40.53125" width="316.40625" height="548.4375">
<UIAWebView name="" label="" value="" dom="" enabled="true" valid="true" visible="false" hint="" path="/0/2/1/0" x="29.296875" y="40.53125" width="684.375" height="1170.703125">
<UIAStaticText name="Username *" label="Username *" value="" dom="[object Object]" enabled="true" valid="true" visible="false" hint="" path="/0/2/1/0/15" x="94.921875" y="783.5" width="92.578125" height="22.265625">
</UIAStaticText>
<UIATextField name="" label="" value="" dom="[object Object]" enabled="true" valid="true" visible="false" hint="" path="/0/2/1/0/16" x="94.921875" y="811.625" width="604.6875" height="46.875">
</UIATextField>
错误信息如下:
org.openqa.selenium.InvalidElementStateException: SyntaxError: DOM Exception 12 (WARNING: The server did not provide any stacktrace information)Command duration or timeout: 22 milliseconds
我尝试了以下方法,但不起作用:
I have tried the following and doesn't work:
- 首先使用
driver.switchTo().window("WEBVIEW_1"); 切换到窗口;
- 使用
driver.findElement(By.id("Username *"))
- 使用
driver.findElement(By.xpath("//input[@name='用户名*']"));
- 使用
driver.findElement(By .xpath("//UIAApplication[1]/UIAWindow[3]/UIAScrollView[1]/UIAWebView[1]/UIAStaticText[14]"));
我也尝试先滚动到它:
- 只使用
scollto: driver.scrollTo("Username *");
- `((JavascriptExecutor) 驱动程序).executeScript(
- "arguments[0].scrollIntoView(true);", driver.findElement(By.name("Username *")));`
错误消息是 NoSuchElement 或上面的那个.
Error message are either NoSuchElement or the one above.
请帮忙!谢谢!
推荐答案
I'd go for driver.findElement(By.xpath("//UIAStaticText[contains(@name,'Username')]"));其实所有的元素位置搜索方法都可以先在Appium Inspector中进行测试,看看是否有效.
I'd go for driver.findElement(By.xpath("//UIAStaticText[contains(@name,'Username')]")); Actually, all search methods for element location can be tested in Appium Inspector first to see if they work.
这篇关于无法在使用 Appium 的 iOS 本机应用程序的 webview 页面上找到元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!