c# - 如何使用 C# 和 Appium 检查 WebElement 是否不存在并抛出正确的错误
问题描述
我有一个代码,通过它的 ID 检查页面上是否存在 AppiumWebElement(我正在检查预期元素的列表,我希望看到页面上没有任何这些元素丢失)。当元素存在时 - 它工作正常。但是如果元素不存在 - 它会抛出我:
OpenQA.Selenium.WebDriverException : The HTTP request to the remote WebDriver server for URL http://127.0.0.1:4723/wd/hub/session/92e77b3a-d69b-4261-9ade-59621875206a/element/7.2308.43816588/element timed out after 60 seconds.
我想得到一些更有意义的东西,比如“ Element XXX 不存在/找不到”,而不是 TimeOut。
我尝试了两种方法:
private static bool RowsContainCorrectColumns(IEnumerable<AppiumWebElement> rows, IList<string> columnsIdsList) { var firstRow = rows.FirstOrDefault(); if (columnsIdsList.Any()) { foreach (var id in columnsIdsList) { try { firstRow.FindElementByAccessibilityId(id); } catch (NoSuchElementException) { return false; } } } return true;
}
private static bool RowsContainCorrectColumns(IEnumerable<AppiumWebElement> rows, IList<string> columnsIdsList) { var firstRow = rows.FirstOrDefault(); if (columnsIdsList.Any()) { foreach (var id in columnsIdsList) { if (!firstRow.FindElementByAccessibilityId(id).Displayed) { return false; } } } return true;
}
使用 RowsContainCorrectColumns 的方法:
public static void AssertRowsContainCorrectColumnsById<T>(this ReportsTestFixture fixture, IEnumerable<string> columnsIds) where T : ViewCommonControls, new()
{
(
from view in fixture.MainWindow.InitializeView<T>()
from rows in Result.Try(() => view.DataGridControl.FindElementsByClassName("DataRow"))
select RowsContainCorrectColumns(rows, columnsIds)
)
.Should().BeSuccessful()
.AndSuccessValue.Should().BeTrue();
}
解决方案
您可以获取元素的列表,然后检查列表的大小是否大于零。如果 size>0 则元素存在于页面上,否则不存在。
你可以这样做:
IList<IWebElement> elementList = driver.FindElements(By.Id("put the id here"));
if(elementList.Count>0)
{
// Element is present
}
else
{
// Element is not present
}
推荐阅读
- html - 在功能 js 的屏幕上查看打印结果
- python - 是否可以在不关闭 PySerial 端口的情况下更改端口设置?
- npm - 在 npm install 上运行构建脚本
- java - 用于 android studio 设置的 Unity Native 原生广告
- batch-file - 使用部分名称创建文件夹和移动文件的批处理脚本
- c# - c# socket通信数据丢失
- android - android中特定应用的app-info调用了哪些调用方法?
- bash - 从命令行编译并运行 IDL file.pro?
- cls - Web Vitals:LCP 和 CLS - 测试结果良好,搜索控制台结果不佳
- asp.net-core - 一个网络解决方案中的两个不同项目