2012-02-25 73 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); 

無論哪種方式,可以

相關問題