我正在尝试使用selenium Java为Android设备中的移动应用编写测试用例。我必须在移动应用程序的Web视图中找到一个元素。我已经使用Appium检查窗口检查应用程序并获取元素详细信息如下。
指数:65
text:
class:android.widget.Button
content-desc:拍摄新照片
包:com.abc.xyz
资源ID:
checkable:false
选中:false
clickable:true
已启用:true
focusable:true
专注:假
scrollable:false
long-clickable:false
是密码:false
选中:false
我有使用util方法将窗口从原生视图切换到我们查看。
public class Context {
public void switchContextToWebView(AppiumDriver<WebElement> driver)
throws InterruptedException {
Thread.sleep(Constants.DEFAULT_TIMEOUT);
Set<String> contextNames = driver.getContextHandles();
for (String contextName : contextNames) {
if (contextName.contains("WEBVIEW")) {
driver.context(contextName);
}
}
}
public void switchContextToNativeView(AppiumDriver<WebElement> driver)
throws InterruptedException {
Thread.sleep(Constants.DEFAULT_TIMEOUT);
Set<String> contextNames = driver.getContextHandles();
for (String contextName : contextNames) {
if (contextName.contains("NATIVE")) {
driver.context(contextName);
}
}
}
}
在我的测试类中,我尝试使用下面的代码找到这个元素。
Context context = new Context();
context.switchContextToWebView(driver);
//WebElement pickCameraOption = driver.findElement(By.className("android.widget.Button"));
WebElement elem = driver.findElementByXPath("//android.widget.Button[@content-desc='Take New Photo']");
//WebElement elem = driver.findElementByXPath("//*[@class='android.widget.Button'and @content-desc='Take New Photo']");
wait.until(ExpectedConditions.visibilityOf(elem));
elem.click();
你可以观察到我已经尝试了两种方法来完成这项工作。但是他们不适合我。
任何人都可以帮我弄清楚这个硒发现者的确切问题吗?
答案 0 :(得分:0)
我知道这是一个非常晚的答案。但它可以帮助那些面临同样问题的人
如果您要从原生视图切换到webview,并且您正在使用本机定位器。
如果您的上下文是native,则使用定位器作为xpath = // className [@ attribute ='attributeValue']。如果您尝试查找网页,最好使用webview定位器。
要从本机视图切换到webview,您必须使用Web定位器。 将您尝试自动化的调试应用程序连接到Chrome浏览器,然后输入以下URL chrome:// inspect#devices然后检查。你将获得HTML元素。从这里你将获得所有定位器。