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

时间:2015-12-16 11:52:34

标签: java android xpath selenium-webdriver appium

我试图自动化以阿拉伯语和英语实现的Android应用程序的测试用例。

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

3 个答案:

答案 0 :(得分:2)

我使用的最好的测试工具是理性机器人。它将捕获组件ID而不是图像。并且100%正确捕捉。

对于您的情况,我认为您需要将功能测试和i18n测试分开。该功能仅用英语测试,并有特殊的翻译版本。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

@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();

}