c# - 如何使用 selenium webdriver 提取 UI 标签文本
问题描述
HTML如下:
<div id="field-container" class="field-container center">
<form id="param-list" class="ui form">
<div>
<div class="field-group"><label class="input-label" data-tooltip="Australia, Hello" data-position="right center">Beta</label>
<div class="field">
<div class="ui input"><input id="11" value="123" type="text"></div>
</div>
</div>
<div class="field-group"><label class="input-label" data-tooltip="Australia, USA" data-position="right center">Carbon Reduction</label>
<div class="field">
<div class="ui input"><input id="12" value="" type="text"></div>
</div>
</div>
我的 webUI 有上面的 html,我正在尝试读取里面的所有字段 (id="param-list") 并获取 Beta 和 Carbon Reduction 的名称以及“数据工具提示”的数据。以下是我想要做的,但我无法取回它。
public static List<string> GetFieldsName()
{
List<string> expected = new List<string>();
IWebElement elament = driver.FindElement(container); //container = By.Id("param-list");
IList<IWebElement> fieldNames = elament.FindElements(FiledName); //By.ClassName("field");
foreach (IWebElement fieldname in fieldNames)
{
IList<IWebElement> names = fieldname.FindElements(Inputlable); //By.ClassName("input");
foreach (var name in names)
{
expected.Add(name.GetAttribute("tooltip"));
}
}
return expected;
}
当我这样做时,我得到的只是 NULL 并且不确定如何从 Html 上方选择名称,即Beta和Carbon Reduction 。
解决方案
下面的代码将返回工具提示,如果您需要文本和工具提示,请使用双数组或字典
public static List<string> GetFieldsName()
{
List<string> expected = new List<string>();
IList<IWebElement> labels = driver.FindElements(By.CssSelector("form#param-list label[data-tooltip]"));
foreach (IWebElement label in labels)
{
expected.Add(label.GetAttribute("data-tooltip"));
//To get text("Carbon Reduction",...) use label.GetText()
}
return expected;
}
推荐阅读
- javascript - 让chartjs重新渲染一次
- android - 如何从 Activity-1 中的 Fragment 按钮打开 Activity-2 中的 Fragment-2
- java - 如何取消标记 Perforce P4V 中从本地工作区意外删除的删除文件
- pdf - Testcafe打开PDF时无法截图
- javascript - 从节点请求中获取多个元素,然后选择一个
- asp.net - 从数据透视 SQL Server 动态检索数据
- python - 如何直接从 Excel 文件中选择特定的日期时间行到 DataFrame 中?
- mysql - 更新列如果 count(id) 在表中有多个
- java - 这些代码行之间有区别吗
- c# - 防止 .net winforms 应用程序中的 dll 注入