0
我在C#中使用Selenium Webdriver 2.30。我很感激,如果有人能告訴我如何在以下結構中點擊鏈接(id =「e」)。使用Selenium Webdriver在dl,dt中查找元素C#
<frame name = "a">
#document
<html>
<head></head>
<body>
<div id = "b">
<dl id= "c">
<dt class = "d">
<a href = "http://somewhere.com" id = "e" class> Go to somewhere</a>
</dt>
<dt>
<a href = "http://something.com" id = "f"> Find something </a>
</dt>
</dl>
</div>
</body>
</html>
</frame>
我試圖
selenium.SwitchTo().Frame("a");
selenium.FindElement(By.XPath("//a[@id=\"e\"]")).Click();
並試圖
selenium.SwitchTo().Frame("a");
selenium.FindElement(By.XPath("//div[@id='b']/dl[1]/dt[1]/a")).Click();
我也試過
selenium.SwitchTo().Frame("a");
selenium.FindElement(By.LinkText("Go to somewhere")).Click();
不幸的是,他們沒有工作。問題可能是因爲定義列表中的元素有些不同,但我還沒有弄清楚。
感謝哥們。我的團隊領導幫助解決了這個問題。因爲在此之前我有另一個Swithto框架。所以它實際上在切換幀(「a」)時失敗了。該解決方案非常簡單,只需添加selenium.Navigate()。Refresh();切換到幀之前。根據我的理解,在切換到幀之後,除非您進行頁面刷新,否則webdriver將忽略其他幀。 – 2013-04-12 17:32:43
不,'selenium.Navigate()。Refresh();'可以工作,但這不是處理這個問題的理想方法。如果你想跳出框架,你應該使用'selenium.SwitchTo()。DefaultContent()'[參見ITargetLocator.cs#67](https://code.google.com/p/selenium/source/browse/dotnet /src/WebDriver/ITargetLocator.cs#67)。這將讓webdriver切換回來,然後使用另一個'selenium.SwitchTo()。Frame();'。順便說一下,如果您發現它有幫助並解決了您的問題,請隨時選擇我的答案作爲已接受的答案。 – 2013-04-12 20:56:15