我有一个网页上的记录集合,并且当单击一条记录时,会显示一个'Delete'链接(实际上是'unhidden',因为它实际上总是存在) 。只使用C#中的Selenium WebDriver查找非隐藏元素
当试图访问这个'删除'链接时,我正在使用它的值。
当我使用Driver.FindElement
,它返回第一删除链接,即使它是隐藏的,因此不能点击它(和不应该,因为它是不正确的链接)。
那么,我基本上想要做的只是找到非隐藏的链接。下面的代码工作正常,但是当它遍历每个删除链接时,我担心它可能效率低下。
有没有更好的方法?
public class DataPageModel : BasePageModel
{
private static readonly By DeleteSelector = By.CssSelector("input[value=\"Delete\"]");
private IWebElement DeleteElement
{
get
{
var elements = Driver.FindElements(DeleteSelector);
foreach (var element in elements.Where(e => e.Displayed))
{
return element;
}
Assert.Fail("Could not locate a visible Delete Element");
return null;
}
}
}
硒测试很慢,所以这段代码可能不会将执行时间增加1%......我会更担心代码的可读性:意图交流。你正在寻找一个特定的链接或任何非隐藏的删除链接。如果一个具体的,它会更好地找到Id。如果有任何链接,我会为该物业找到更好的名称。 – 2012-04-17 05:51:45
即使它只有1%,当你多次调用它时,它也会产生雪球效应。接下来的事情你知道你有一个需要几小时而不是几分钟的构建。 – 2012-04-17 06:00:38
即使您在同一测试中调用此方法100次,它可能只需要您的服务器渲染一页所需的时间的一小部分。为了缩短构建时间,测量和优化实际需要很长时间的部件。这种方法不会。 – 2012-04-17 06:27:41