【发布时间】:2019-01-05 19:16:01
【问题描述】:
我一直在学习 LINQ,并试图将其应用于使用 selenium 在页面上查找某些 Web 元素。
我有一个 Angular 网站,它显示一个由 div 组成的表格。一列中的所有行,包括标题,都具有相同的属性(例如 css 选择器/类名等)。
我想找到列中所有可见的输入框,并想出了这个...
var applyBoxes2 = from box in driver.FindElements(By.CssSelector("div.col-apply.col-md-1"))
where box.Text != "Apply?"
select box;
var clickableBox = from box in applyBoxes2
where box.FindElement(By.TagName("input")).Displayed == true
select box.FindElement(By.TagName("input"));
第一个查询是必需的,因为第一行是标题,并且不包含输入字段。如果我没有此查询,我的第二个查询将在尝试执行 findelement = "input" 时失败。
有人知道我是否可以将这两个语句结合起来吗?所以首先我会过滤掉标题,然后我会在每个 div 中找到每个输入框。
欢迎任何关于如何改进此功能的想法。
非常感谢,
【问题讨论】:
-
你不能扩展第一个,例如。
where box.Text != "Apply?">&&&& 如果第一个失败则短路,因此当文本为 Apply 时它不会尝试找到它?