如何使用c#单击Selenium中的超链接

时间:2012-02-25 05:57:49

标签: c# selenium hyperlink webdriver selenium-webdriver

我刚刚开始使用Selenium。我试图在网页上的链接上调用点击操作,但出于某种原因,selenium.click()事件甚至没有显示在intellisense上!在foreach循环中。以下是我想要做的部分代码。

    IWebDriver driver;
    driver = new InternetExplorerDriver();
    driver.Navigate().GoToUrl("http://www.google.com");
    List<IWebElement> links = new List<IWebElement>();
    links= driver.FindElements(By.TagName("a")).ToList();
    //driver.FindElement(By.LinkText("YouTube")).Click();
    foreach (var link in links)
    {
        OpenQA.Selenium....;
        ..
    }

请注意,点击在foreach循环上方的注释行中正常工作。 我错过了参考文献吗?

4 个答案:

答案 0 :(得分:6)

为什么期望selenium.Click();出现?从您提供的代码看起来,您使用的是WebDriver,而不是Selenium RC或WebDriverBackSelenium。您可能应该考虑使用类似link.Click();的内容。

这是我使用WebDriver做的事情,对我来说很好。

IWebDriver driver = new InternetExplorerDriver();
driver.Navigate().GoToUrl("http://www.google.com");

// find directly, note it's not in the <a> but in <span>
// driver.FindElement(By.XPath("//span[text()='YouTube']")).Click();

// your logic with LINQ
IList<IWebElement> links = driver.FindElements(By.TagName("a"));
links.First(element => element.Text == "YouTube").Click();

// your logic with traditional foreach loop
foreach (var link in links) {
    if (link.Text == "YouTube") {
        link.Click();
        break;
    }
}

driver.Quit();

答案 1 :(得分:0)

我想By方法找不到你的TagName。请改为By.LinkText("a")

links= driver.FindElements(By.LinkText("a")).ToList();

或者尝试其他By方法(id,className,...)

€:

List<IWebElement> links = new List<IWebElement>();
    links.add(driver.FindElements(By.TagName("a")));
    //driver.FindElement(By.LinkText("YouTube")).Click();

links.get(0).click();

答案 2 :(得分:0)

你可以尝试在你的foreach循环中投射他链接到IWebELement,如:

 foreach(IWebELelent link in links) 
{
------
-----
}

答案 3 :(得分:0)

driver.FindElement(By.Xpath("")).Click();

driver.FindElement(By.Xpath("")).SendKeys(Open.QA.Selenium.Keys.Enter);

无论哪种方式都可以