我在C#中使用Selenium Webdriver 2.30。如果有人能告诉我如何在以下结构中点击链接(id =“e”),我感激不尽。
<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();
不幸的是,它们都不起作用。问题可能是因为定义列表下的元素有所不同,但我还没想到。
答案 0 :(得分:0)
抛出的异常消息在这里可能很有用,如果可以,则发布。
首先,你需要确保它在正确的框架中。 尝试调试以下内容并查看计数是否正确。
selenium.SwitchTo().Frame("a");
IList<IWebElement> dt = selenium.FindElements(By.XPath("//div[@id='b']//dt"));
// alternative way
selenium.SwitchTo().Frame(selenum.FindElement(By.CssSelector("frame[name='a']")));
IList<IWebElement> dt = selenium.FindElements(By.CssSelector("#b dt"));
如果它在正确的框架中,请使用Firebug验证xpath或cssSelector。我也会尝试以下方法。请记住确保元素实际已加载。 WebdriverWait可能有用。
selenium.FindElement(By.CssSelector("#e")).Click();
selenium.FindElement(By.CssSelector("dt.d>a")).Click();
selenium.FindElement(By.XPath("//a[text()='Go to somewhere']")).Click();
selenium.FindElement(By.XPath("(//dl[@id='c']/dt/a)[1]")).Click();