c# - .在通过 Appium 1.9.1 在 Android 8.0.0 上进行浏览器测试时以 C# 显示抛出
问题描述
此代码在本地(即在 PC 上)对Chrome运行良好...
IWebElement widget = Driver.FindElements(widgetLocator).FirstOrDefault(x => x.Displayed);
...但是在针对Appium 1.9.1与Android 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 CssSelector
,ClassName
以及我能想到的任何其他东西,但没有成功(他们不能可靠地只找到元素的“可见”版本)。
作为背景,我在这里尝试做的是“移植”一些现有的测试脚本,这些脚本通过WebDriver在 PC 上与 Chrome 一起工作,以通过 Appium 在 Android 上测试相同的网站。此遗留代码使用 . 显示在许多地方,如果我在移动情况下找不到可靠的替代品,我们就会遇到一些问题。
解决方案
升级到 Appium WebDriver 4.0.0.4beta 为我解决了这个问题。
推荐阅读
- wordpress - 选择选项中的当前帖子/产品 - Woocommerce
- vba - Excel 中的 VBA 代码,参数不是可选的,CountIf 错误
- mysql - Prestashop - 数据库 mysql 中的组合产品标题
- macos - 汇编 .align 32 指令的对齐值无效
- dwr - 每个浏览器实例而不是每个用户会话的 DWR dwrsessionid
- c# - Azure 地图和物联网中心
- java - 其他 Java 类中的相对路径
- angular - Angular 反应式表单自定义验证器。仅在选中复选框时启用验证
- kotlin - 找不到房间测试数据库实现
- sql-server - 更改数据捕获 - 仅获取不同的最新更改