当前位置: 首页 > 知识库问答 >
问题:

在使用Appium的iOS本机应用的webview页面上找不到元素

段超
2023-03-14

我有一个本机应用程序,可以打开几个网页查看页面。我正在应用程序上运行appium,以便在需要向下滚动以查找用户名和密码字段的web视图页面上进行一些自动化测试。我尝试了所有我能在网上找到的建议,但都不起作用。有人能帮忙吗?我正在运行: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());

这是我尝试滚动到并输入用户名的元素

     <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

我尝试了以下方法,但不起作用:

  1. 首先使用driver.switchTo().window(“WEBVIEW_1”)切换到窗口

我还尝试先滚动到它:

  • 只需使用scollto:driver.scrollTo(“用户名*”)

错误消息为NoTouchElement或上面的错误消息。

请帮帮忙!谢谢!


共有2个答案

西门鹏程
2023-03-14

如果您测试web应用程序,则必须使用网页定位器。在这里查看我的答案(更正:):在使用Appium和C的Android emulator的浏览器中找不到元素#

广乐邦
2023-03-14

我选择driver.findElement(By.xpath(“//UIAStaticText[contains(@name,'Username')]);实际上,所有元素位置的搜索方法都可以先在Appium Inspector中测试,看看它们是否有效。

 类似资料:
  • 我正在使用Appium客户端记录并生成iOS应用程序的测试脚本。在App Inspector上,我可以点击登录按钮并生成脚本(python),如下所示: 我可以成功登录到我的应用程序点击应用程序检查员上的按钮,但我得到了一个错误,因为我在mac终端上运行脚本: els3[0]。单击() 索引器:列表索引超出范围 我尝试了使用、和访问按钮元素的不同方法,但上述方法都无效。 我错过了什么?这是Appi

  • 我最近开始研究iOS本机应用程序自动化- MAC OS 10.10.2iOS模拟器-iPhone 5s,iOS8.1 Appium 1.3.4 应用在应用商店中-我正在使用此应用商店应用的.App文件 Appium.app中的iOS设置-应用路径-为.app文件提供路径强制设备-模拟器设备 代码- 我还尝试只在代码中提供应用程序路径,但没有在appium.app中提供,我尝试使用和不使用应用程序的

  • 即使按ID查找也不起作用。请让我知道我在这里做错了什么或者如果我需要提供更多的细节。

  • 我写了测试自动化脚本为Android使用selenium和AppiumJava作为编码语言。脚本在Android 6模拟器上工作得非常好。但是,在Android 7模拟器上,驱动程序启动应用程序,但无法找到应用程序上的任何元素。 示例代码: 其中android.widget.TextView是类名,文本属性包含作为文本的设备。 当我运行这个时,它在驱动程序处失败。findElement步骤并抛出N

  • 我对在Selenium中使用python还很陌生。

  • 我试图使用ionic2/Angular2和typecript自动构建混合应用程序。 我使用C#编写代码。测试在BDD-specflow版本中:iOS:9.3.1 Xcode:7.3 Appium:1.4.13 将上下文切换到WEBVIEW后,我无法识别元素。 使用下面的代码调用IOSDriver 将功能设置为 我是否以正确的方式设置了功能? 尝试解决方案: 我检查使用浏览器名称能力作为空白/Saf