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

如何在附庸中查找元素

刘建中
2023-03-14

我是应用程序新手。

我正在学习购物应用程序(Flipkart)的自动化应用程序。

我正在尝试从“推荐给您的折扣”列表中选择第5个元素。

为了做到这一点,我必须水平滚动以接触到该元素。但是我在获取容器元素时遇到了问题,其中存在“为您推荐的折扣”元素,因此我可以获取第5个元素

我猜问题是flipkart的用户界面总是在变。

   driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
   Thread.sleep(3000);
   driver.scrollToExact("Recommended Offers for You");
   Thread.sleep(10000);
   // Getting error on below line
   AndroidElement ele = (AndroidElement) driver.findElement(By.xpath("//android.support.v7.widget.RecyclerView[@index='1']"));

  for(int i=0;i<4;i++)
   {
   Thread.sleep(2000);
   if (ele.findElement(By.xpath("android.widget.RelativeLayout[@index='2']")).isDisplayed())
   {
       ele.findElement(By.xpath("android.widget.RelativeLayout[@index='2']")).click();
       break;
   }
   else
   {
       horizontalScroll(ele);
   }

   }

public void horizontalScroll(AndroidElement ele)
{
  Dimension size=driver.manage().window().getSize();
  int x_start=(int)(size.width*0.60);
  int x_end=(int)(size.width*0.30);
  int y=130;
  ele.swipe(SwipeElementDirection.RIGHT,x_end,y,4000);
}

我正在使用< code>uiautomator来< code >查找元素。下面是UI的截图。

我有以下问题:

  1. 如果显示应用程序的UI,查找元素的最佳方法是什么。
  2. 为了学习appium,我应该自动化哪个应用程序。
  3. 如果应用程序的UI总是发生变化,如何自动化应用程序

请帮忙!提前谢谢。

共有3个答案

万喜
2023-03-14

如果您有多个具有相同资源id的UI元素,则可以使用索引和资源id。

WebElement element=driver.findElements(By.id("your_id")).get(1);
慕容嘉熙
2023-03-14

在这里,我看到元素有一个资源id。为什么不使用它?

> < li>

如果应用程序的用户界面与显示的一样,找到元素的最佳方法是什么?通常,通过资源id查找元素是一种首选方法。因为,它比xpath更快地找到元素。此外,如果中间添加了元素,xpath也会变化,因为层次结构中的元素会发生变化。

我应该自动化哪个应用程序才能学习应用程序。任何原生应用程序,首先要使用应用程序提供的UICatalog iOS版,以及来自Android播放商店的应用程序。

如果应用程序的用户界面总是在变化,如何自动化应用程序可扩展的自动化用户界面应用程序的解决方案包括创建页面对象,在一个地方维护定位器,而不是分散到测试用例等。这取决于变化的幅度,是导航发生了变化,还是元素层次结构发生了变化等。基于资源id的选择总是首选的,如果应用程序中有布局变化,这可以减少自动化脚本的变化。但恐怕没有单一的方法来解决这个问题。

卫景明
2023-03-14

>

  • 在应用中查找元素的最佳(或者更确切地说是最快的)方法是使用资源 ID。如果资源 ID 不可用/相同,则必须使用 xpath 找到它

    如果你想学习Appium,你可以从遵循这些教程开始 穆克什·奥特瓦尼 这里是链接

    如果UI不断更新,唯一的解决方法就是用更改不断更新脚本。

    希望它有帮助!

  •  类似资料:
    • 我不能得到子元素。 我可以用appium inspector看到childNameTV元素下的childNameLabel元素 例如,我尝试查找第一个子元素的文本;

    • 我正在使用appium测试android混合应用程序。有人能告诉我如何使用UIAutomator查找元素吗?因为appium给出的xpath在我的例子中不起作用。 非常感谢!

    • 我想点击一个网站上的按钮。有没有一个代码可以让我通过使用文本字段来点击元素?我既不能使用资源id字段,也不能使用名称,因为它们是空的。我尝试使用xpath单击元素,但没有成功。

    • 问题内容: 我有一个清单“ a” 我需要找到一个特定数字的所有元组。说1 我怎么做? 问题答案: 如果只希望第一个数字匹配,则可以这样操作: 如果您仅搜索其中包含1的元组:

    • 我很难在hashmap中的字符串数组中找到一个元素。我有一个字符串,它确实在这个String[]里面,但执行以下操作不起作用。 我的目标是在找到值的地方找到我的HashMap的对应键。 以我的地图示例为例: 如果搜索字符串,我希望有一个新的字符串数组,它将是: 我也尝试使用,但没有成功。 我做错了吗?谢谢!

    • 问题内容: 我无法使用Beautifulsoup解析具有“ class”属性的HTML元素。代码看起来像这样 脚本完成后的同一行出现错误。 如何摆脱这个错误? 问题答案: 您可以使用BS3优化搜索以仅找到具有给定类的那些div: