如果应用程序是多语言的,定位元素的最佳方法是什么?
What is the best way to locate element if the app is multi languages?
我正在尝试自动化 android 应用程序的测试用例,该应用程序以阿拉伯语和英语实现。
我正在使用 appium
和 AndroidDriver
。我也在主要测试中使用 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();
}
我正在尝试自动化 android 应用程序的测试用例,该应用程序以阿拉伯语和英语实现。
我正在使用 appium
和 AndroidDriver
。我也在主要测试中使用 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();
}