我们可以使用“link”属性进行元素查找吗?

时间:2013-07-10 04:29:58

标签: c# selenium

对于硒用户来说,这可能是一个简单的问题:

我知道在查找元素时可以使用的一些属性:Name,TagName,Css等等。

但是我们可以在c#中使用类似“link = -----”的东西来进行基于该属性的元素查找吗?

The image is the attribute which I get while I use Selenium IDE Recorder

1 个答案:

答案 0 :(得分:1)

不熟悉Selenium IDE,我假设link=601-800 students的含义类似于<a href='something'>601-800 students</a>

然后,您可以使用By.XPath找到包含文字的链接,或使用By.LinkText,甚至是By.PartialLinkText

driver.FindElement(By.XPath("//a[text()='601-800 students']"));
//driver.FindElement(By.LinkText("601-800 students"));

修改

如果您有一些带有相同文字的链接,请尝试识别唯一的祖先。

E.g。

var headLink = driver.FindElement(By.XPath("//*[@id='header']//a[text()='601-800 students']"));
var mainLink = driver.FindElement(By.XPath("//*[@id='main']//a[text()='601-800 students']"));

如果无法做到这一点,请FindElements将它们组合在一起(注意这不是FindElement),它们会将它们编入索引。

IList<IWebElement> links = driver.FindElements(By.XPath("//a[text()='601-800 students']"));
//IList<IWebElement> links = driver.FindElements(By.LinkText("601-800 students"));
var firstLink = links[0];
var secondLink = links[1];
foreach(IWebElement link in links) {
    // stuff to do with link
}