0

任何人都可以帮我点击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();

我收到一个错误:

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

4

2 回答 2

0

首先,如果你的页面在iframe中,你需要先切换到frame。

鉴于评论中的 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();
于 2013-05-07T21:10:44.940 回答
0

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

driver.FindElement(By.XPath("//div[@class='test1']/a[contains(text(), 'Images2')]")).Click();
于 2013-05-07T23:08:31.610 回答