Appium:在Android混合应用程序中无法使用Xpath定位元素?

时间:2016-12-22 10:04:39

标签: android xpath selenium-webdriver appium

我尝试使用appium自动化混合应用程序。我使用Ionic Framework开发了我的应用程序。我已经完成了整个设置准备就绪。然后我试图在Mozilla.i中找到使用firebug检查的元素,发现特定按钮的xpath为//Button[text()='BROWSE MENU']

但是当我尝试使用appium进行测试时,它无法找到它,我的测试失败了。

我在我的测试

中尝试过这样的事情
driver.findElement(By.xpath("//button[text()='BROWSE MENU']")).click();

这是我在控制台上获得的错误

FAILED: Loginforsample
org.openqa.selenium.NoSuchElementException: An element could not be located on the page using the given search parameters. (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 5.13 seconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html

这是检查员enter image description here

我不知道到底哪里出错了。最初我尝试用WEB_VIEW检查铬,然后我注意到离子具有使用离子服务直接检查的优势。所以我只是转移到那里,我又在这里得到了结构。请帮我们解决这个问题。

提前谢谢。

3 个答案:

答案 0 :(得分:2)

尝试将Explicit wait添加到您的代码中:

//driver.switchTo().frame("put_iframe_id_or_name_here");  //to switch to iframe
WebDriverWait wait = new WebDriverWait(driver, 30);
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//button[text()='BROWSE MENU']")));
element.click();
//driver.switchTo().defaultContent();  //to switch back if required

答案 1 :(得分:2)

我用这个问题所以我使用cssSelector这是测试混合应用的好方法!

答案 2 :(得分:1)

在您对此按钮执行操作之前,尝试应用10秒等待[Thread.sleep(10000);]。 如果它工作,那么很好,否则将定位器更改为cssSelector。