0

我在 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();

不幸的是,它们都不起作用。问题可能是因为定义列表下的元素有一些不同,但我还没有弄清楚。

4

1 回答 1

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();
于 2013-04-11T21:41:24.470 回答