【问题标题】:Addressing issue in reusing appium/android driver and webdriver based methods解决重用 appium/android 驱动程序和基于 webdriver 的方法的问题
【发布时间】:2015-07-24 13:41:18
【问题描述】:

我们有一个名为click(WebElement element) 的方法的当前实现,它具有以下代码

WebDriver driver = new RemoteWebDriver(new URL("Grid URL"), capabilities);
public void click(WebElement element) {
    element = driver.findElement(By.id("some id"));
    element.click();
}

上面的click方法用于点击Firefox浏览器中的元素。

现在,如果我在同一个框架中使用Appium,我还有一个click 方法可以在Android 或iOS 平台上单击一个元素。所以代码是

AndroidDriver anroidDriver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
public void click(WebElement element) {
    element = driver.findElement(By.id("some id"));
    element.click();
}

如您所见,click 方法是相同的。我想做的是重用代码。我可以的

AndroidDriver anroidDriver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);

但这里的问题是它不适用于iOS 平台。我试过这样做

WebDriver driver = (AndroidDriver) RemoteWebDriver(....);

但这里的问题是AndroidDriver 有一些方法不在WebDriver 中。其他人是如何解决这个问题的?

【问题讨论】:

    标签: java android selenium selenium-webdriver appium


    【解决方案1】:

    AndriodDriver 和 IOSDriver 是 Remotewebdriver 的实现。从问题中我看到您希望将对象的实例化重用为可重用的代码,而您不能。

    你所做的就是使用

    Webdriver driver = new AndriodDriver(...) or Webdriver driver = new IOSDriver. 
    

    由于您的驱动程序是指向子类实例化的基类变量,因此驱动程序变量将适用于两者。

    例如:

    driver.click()
    

    两者都适用。您不能重用 instatiation 中的代码行,但通过使用基类型引用变量,您可以利用多态性的好处

    【讨论】:

    • 但是如果我这样做了,我将无法使用很多方法,如swipe()tap() 等,因为这仅在AndroidDriverIOSDriver 中可用。仅当我这样做时才有效AndroidDriver driver = new AndroidDriver(...)
    【解决方案2】:

    试试下面的方法:

    WebDriver driver;
    AppiumDriver<MobileElement> androidDriver = new AndroidDriver<MobileElement>(new URL("http://"), desiredCapabilities);
    driver = androidDriver;
    

    通过这种方式,您可以同时访问 AndroidDriver 和 WebDriver 方法。
    如果您有任何其他解决方案,请告诉我。谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-08
      • 2023-04-03
      • 2018-05-14
      • 2019-08-13
      • 2015-01-23
      • 1970-01-01
      • 2015-10-12
      • 1970-01-01
      相关资源
      最近更新 更多