driver.getContextHandles() 或 driver.context() 是否在 Selenium4 中被删除,因为这些方法将用于 Appium 驱动程序?

is driver.getContextHandles() or driver.context() removed in Selenium4 as these methods are coming for Appium driver?

Selenium4 中是否删除了 driver.getContextHandles() 或 driver.context(),因为这些方法将用于 Appium 驱动程序? 我正在使用 Selenium 4.1.1 和 JavaClient- 8.0.0-beta2.

运行 在 Hybrind 应用程序中进行测试时遇到查找元素的问题。 设想 Web 视图正在 App post 单击一个图标打开。元素未找到异常即将到来,而元素在 Chrome.

中是唯一的 found/identified

这方面的任何建议将有助于进一步处理。

关于driver.context()

的问题

这已移至 io.appium.java_client.remote.SupportsContextSwitching 界面,该界面还包括默认实现。

在测试中,如果您使用 AppiumDriver,只需转换驱动程序,例如:

io.appium.java_client.remote.SupportsContextSwitching

((SupportsContextSwitching) driver).getContextHandles();

注意: 要在没有 ClassCastException 的情况下工作,驱动程序最初应创建为 AndroidDriverIOSDriver,例如:

BaseOptions options = new UiAutomator2Options().setAutoGrantPermissions(true);
AppiumDriver driver = new AndroidDriver(new URL("http://localhost:4723/wd/hub"), options);

更多详情

我提到这个,因为driver.context()是更大上下文的特例。

appium java客户端版本 8 与版本 7 相比有很多变化。

其中之一:许多 platform-specific 和 W3C WebDriver 标准方法未定义的方法移出到其他接口。

AppiumDriver没有这个方法

但是如果我们看抛出代码,例如到 AndroidDriver,我们看到它实现了 20 多个额外的接口:

public class AndroidDriver extends AppiumDriver implements
        PressesKey,
        SupportsRotation,
        SupportsContextSwitching,
        SupportsLocation,
        PerformsTouchActions,
        HidesKeyboard,
        HasDeviceTime,
        ...

IOSDriver.

也一样

如果您在 AppiumDriver 中找不到某些方法,请尝试抛出 AndroidDriver/ IOSDriver 正在实现的接口。