有没有人可以帮我点击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();
我收到错误:
{错误“不支持复合类名。请考虑搜索一个类名并过滤结果。”}
答案 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();