2012-02-25 44 views
2

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

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循环上方的注释行中正常工作。 我是否缺少参考?

回答

0

我猜By方法没有找到你的TagName。尝试By.LinkText("a")代替:

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

或者尝试其他方法By(ID,类名,...)

€:

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

links.get(0).click(); 
+0

事实上,它确实。我面临的问题是,在循环中,selenium.click(...)应该可用,正如我在许多示例中看​​到的那样。但是,它不在那里。 Selenium没有列出click()作为我可以使用的可用方法。 ToList()实际上填充了页面上所有可用链接的链接列表,并且它们都是正确的。 – 2012-02-27 16:07:00

+0

也许你的代码有问题。我是java程序员,从我的角度来看,你将链接定义为一种方法?我可能会写在我上面编辑的答案 – ctekk 2012-02-28 15:03:36

4

你为什么想到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(); 
0

你可以尝试铸造,他联系到IWebELement在你的foreach循环,如:

foreach(IWebELelent link in links) 
{ 
------ 
----- 
} 
0
driver.FindElement(By.Xpath("")).Click(); 

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

无论哪种方式,可以

相关问题