如何使用webdriver处理appium中的弹出窗口

时间:2016-12-30 06:00:33

标签: android testing mobile selenium-webdriver appium

我无法单击“打开”按钮并获得例外"没有此类元素异常"。我尝试了所有XPath和id,但我得到了同样的例外。我尝试过getContextHandles(),它返回大小为1。这意味着控制无法切换。请帮助我点击"打开"按钮。

以下是我试过的xPath。

By.name("Open");
By.xpath("//android.widget.Button[@index='1']");
By.xpath("//android.widget.Button[@resource-id='org.hola:id/btn_open']");
By.xpath("//android.widget.Button[@resource-id='org.hola:id/btn_open' and @index='1' and @text='Open']");

enter image description here

enter image description here

3 个答案:

答案 0 :(得分:0)

如果在启动任何应用程序后出现此弹出窗口,则必须在代码中设置“appActivity”和“appPackage”功能。

答案 1 :(得分:0)

尝试使用MobileBy代替By

MobileBy.name("Open");
MobileBy.xpath("//android.widget.Button[@index='1']");
MobileBy.xpath("//android.widget.Button[@resource-id='org.hola:id/btn_open']");
MobileBy.xpath("//android.widget.Button[@resource-id='org.hola:id/btn_open' and @index='1' and @text='Open']");

答案 2 :(得分:0)

可以使用 UIAutomator viewer 工具识别定位器。以下代码设置用于处理Appium中的弹出窗口

WebDriver driver;
@BeforeTest
static void setup() throws MalformedURLException{
    DesiredCapabilities cap = new DesiredCapabilities();
    cap.setCapability(CapabilityType.PLATFORM, "Android");
    cap.setCapability(CapabilityType.VERSION, "Android-version"); 
    cap.setCapability("deviceName", "connected device name");
    cap.setCapability("appPackage", "App package name");
    cap.setCapability("appActivity", "App activity");
    driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap); 
}
@Test
static void Selendroid() throws InterruptedException{
    Thread.sleep(2000);
    driver.findElement(By.name("Locator")).click();
    System.out.println(driver.findElementById("android:id/message").getText());
    driver.findElement(By.name("Locator")).click();
}

对于浏览器提醒,请使用driver.switchTo().alert()方法处理