如果应用程序是多语言的,定位元素的最佳方法是什么?

What is the best way to locate element if the app is multi languages?

我正在尝试自动化 android 应用程序的测试用例,该应用程序以阿拉伯语和英语实现。

我正在使用 appiumAndroidDriver。我也在主要测试中使用 Xpath 。 当我切换到阿拉伯语时,测试用例不再起作用。 有什么建议吗?

我用过的最好的测试工具是rational robot。它将捕获组件 ID 而不是图像。并且 100% 正确接球。

对于你的情况,我认为你需要将功能测试和国际化测试分开。功能只测试英文,翻译有特殊情况

尝试使用 monitor.bat 找出元素的 id or class,它应该在您的 Android sdk 中。如果没有看到您的应用程序代码,就很难说出为什么它没有点击密码字段。但是,如果您提供正确的 ID,则无论应用程序使用何种语言,它都应该始终有效。

@karthick:这是我正在使用的代码,它工作正常。但是如果我在开始写密码之前没有清除密码字段,即使在发送密钥之后它也将永远是空的。

public void Credentials(String username,String password)
{ 
    driver.findElement(By.xpath("//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.ScrollView[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[1]/android.widget.EditText[1]")).sendKeys(username);
    driver.findElement(By.xpath("//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.ScrollView[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[1]/android.widget.EditText[2]")).clear();
    driver.findElement(By.xpath("//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.ScrollView[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[1]/android.widget.EditText[2]")).sendKeys(password);
    driver.findElement(By.xpath("//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.ScrollView[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[1]/android.widget.TextView[1]")).click();

}