如何点击div中的链接

时间:2013-05-07 10:36:59

标签: selenium-webdriver

有没有人可以帮我点击div下的链接(Images1)?

<div class="test1"><a class="k1">Images1</a></div>

<div class="test1"><a class="k1">Images2</a></div>

注意:不工作

var imagesLink = driver.FindElements(By.ClassName("k1"))[0];
imagesLink.Click();

我收到错误:

  

{错误“不支持复合类名。请考虑搜索一个类名并过滤结果。”}

2 个答案:

答案 0 :(得分:0)

首先,如果您的网页位于iframe中,则需要先切换到相框。

鉴于评论中的html如下:

<html lang="en" xmlns="w3.org/1999/xhtml">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        <div id="hdtb" role="navigation">
            <div id="hdtbSum">
                <div id="hdtb_msb">
                    <div class="hdtb_mitem hdtb_msel"> </div>
                    <div class="hdtb_mitem"> <a class="q qs" href="yahoo.co.in">Yahoo</a> </div>
                    <div class="hdtb_mitem"><a class="q qs" href="gmail.com">Gmail</a></div>
                    <div class="hdtb_mitem"><a class="q qs" href="hotmail.com">Hotmail</a> </div>
                </div>
            </div>
        </div>
        </div> 
    </body>
</html>

查找Gmail链接的多种方式:

driver.FindElement(By.CssSelector(".hdtb_mitem > a[href='gmail.com']")).Click();
// alternatives:
// driver.FindElements(By.CssSelector(".hdtb_mitem > a"))[1].Click();

driver.FindElement(By.XPath("//div[@class='hdtb_mitem']/a[@href='gmail.com']")).Click();
// alternatives:
// driver.FindElement(By.XPath("//div[@class='hdtb_mitem']/a[text()='Gmail']")).Click();
// driver.FindElements(By.XPath("//div[@class='hdtb_mitem']/a"))[1].Click();
// driver.FindElement(By.XPath("(//div[@class='hdtb_mitem']/a)[2]")).Click();

答案 1 :(得分:0)

另一种XPath方法是“按文本”搜索,因为包含的文本似乎是唯一真正唯一的标识符(这通常不太理想,但在这种情况下,您似乎无法控制HTML)。

driver.FindElement(By.XPath("//div[@class='test1']/a[contains(text(), 'Images2')]")).Click();