我有与该元素关联的id,但是当尝试使用findElement(By.id())找到它时,它不起作用。
此外,我在博客中搜索了同样的问题,例如Can we find element by ID in appium,但我看到其中的资源ID前缀为packagename和:id
。在我的情况下,这些没有关联。元素详情的屏幕截图如下:
我使用下面的代码按id找到元素。
- driver.findElement(By.id("loginHome"));
- driver.findElement(By.id("com.packagename:id/loginHome"));
- driver.findElement(By.id("android:id/loginHome"));
- driver.findElement(By.xpath(//*[@id='loginHome']));
但上述代码片段均无效。
有人可以帮我解决这个问题!
Thnx提前......
答案 0 :(得分:1)
不完全回答您的问题,但为您提供替代方法来完成测试。
我按照此链接https://github.com/appium/appium-dot-app进行操作。
您无需编码所有内容。该应用程序提供了一些简单的方法来记录您的点击和手势。
例如,当我点击某些内容时,它会自动打印出脚本。 wd.find_element_by_xpath(“// android.view.View [1] /android.widget.FrameLayout [2] /android.widget.LinearLayout [1] /android.widget.RelativeLayout [2] /android.widget.RelativeLayout [1 ]“)。单击()
您只需选择自己喜欢的编程语言并在测试完成后保存即可。
我必须指出的一件事是刷卡功能已损坏。使用以下代码执行滑动手势
wd.swipe(421, 424, 70, 424, 500)
答案 1 :(得分:0)
您也可以尝试其他选项。试试这个:
//add some wait command before the element
Thread.sleep(2000);
driver.findElementsByXPath("//*[@class='android.widget.Button' and @index='4']");
答案 2 :(得分:0)
尝试在点击usind ID之前为要加载的页面添加显式睡眠。
答案 3 :(得分:0)
首先尝试等待特定元素
MobileElement expelement=(MobileElement) (new WebDriverWait(driver, 15)).until(ExpectedConditions.presenceOfElementLocated(By.xpath("//android.widget.Button[@index='4']")));
然后尝试进行点击(或您想要做的活动)
driver.findElement(By.xpath("//android.widget.Button[@index='4']")).click();