首页 > 解决方案 > .在通过 Appium 1.9.1 在 Android 8.0.0 上进行浏览器测试时以 C# 显示抛出

问题描述

此代码在本地(即在 PC 上)对Chrome运行良好...

IWebElement widget = Driver.FindElements(widgetLocator).FirstOrDefault(x => x.Displayed);

...但是在针对Appium 1.9.1Android 8.0.0对话时会抛出以下内容:

OpenQA.Selenium.WebDriverException: '处理命令时发生未知的服务器端错误。原始错误:未知错误:isShown 的参数必须是元素类型(会话信息:chrome=73.0.3683.90)(驱动程序信息:chromedriver=2.44.609538

浏览器确实在 Android 上启动,导航到我们网站中它应该的页面,并且在大多数情况下都可以正常工作。但是,Displayed 总是抛出上述内容,无需进一步解释。有人见过这个吗?

我试过用ExecuteJavaScript()硬方法检查可见性,但在OpenQA.Selenium ExecuteJavaScript() 返回 void时,不像bool在其他平台上那样。我已经尝试过,已启用,但这并没有达到我想要的效果。我借用了一个同事的IsElementVisible()功能如下,但这也会抛出:

public static bool IsElementVisible(IWebDriver driver, By locator)
{
    WebDriverWait wait = new WebDriverWait(driver,System.TimeSpan.FromMinutes(1));
    WebDriverWait w = new WebDriverWait(driver, TimeSpan.FromMinutes(1));
    try
    {
        wait.Until(ExpectedConditions.VisibilityOfAllElementsLocatedBy(locator));
    }
    catch (Exception ex)
    {
        return false;
    }
    return true;
}

最后,我尝试FindElement了我正在寻找的元素 via CssSelectorClassName以及我能想到的任何其他东西,但没有成功(他们不能可靠地只找到元素的“可见”版本)。

作为背景,我在这里尝试做的是“移植”一些现有的测试脚本,这些脚本通过WebDriver在 PC 上与 Chrome 一起工作,以通过 Appium 在 Android 上测试相同的网站。此遗留代码使用 . 显示在许多地方,如果我在移动情况下找不到可靠的替代品,我们就会遇到一些问题。

标签: c#androidappium

解决方案


升级到 Appium WebDriver 4.0.0.4beta 为我解决了这个问题。


推荐阅读