我目前正在与Selenium合作,现在已经到达了一个有趣的CSS选择器领域,但是难度却非常高。
我目前正在寻找选择Google工具栏的其他选项。例如,当您搜索某项内容时,在结果页上,您可以选择搜索相同的字词,但在图片,新闻,视频等下方
我对选择“图像”链接特别感兴趣。
我已经研究了一段时间了,最接近的是下面的选择器:
div a.q.qs [href]
这将深入到正确的子类,但其中有16个。尽管进行了无数次漫无目的的搜索,但我无法使用围绕锚文本的contains方法来完成查询,该方法在目标子类中是唯一的。
我知道Selenium中有一个By LinkText选项,但是我不确定锚文本在整个页面中是否唯一。另外,我真的很想了解CSS选择器,因此即使我想解决这个特定问题,也可以将其应用于将来的问题。
我正在寻找类似下面的伪CSS选择器的东西:
div a.q.qs [href] .Anchorcontains(“ Images”)
有人可以帮忙吗?
答案 0 :(得分:3)
所有链接都有一个称为tbm
的唯一参数:对于图片,其值为isch
,所以我会选择
a[href*="tbm=isch"]
答案 1 :(得分:0)
有时可以通过CSS选择器获得所需的内容,但是如果要通过包含的文本查找元素,则必须使用链接文本/部分链接文本(如果它是链接)或XPath来使用其他所有内容。 / p>
您想要的XPath
//div[@id='hdtb-msb-vis']//a[.='Images']
您可以使用//a[.='Images']
,但返回两个元素,其中一个不可见。
要对此进行细分
//
在任何级别
div
找到DIV
[@id='hdtb-msb-vis']
的ID为“ hdtb-msb-vis”
//a
的任何级别都有孩子A
[.='Images']
包含等于“图片”的文本(.
)
如果要通过链接文本进行浏览,可以编写类似
的内容int count = driver.findElements(By.linkText("Images")).size();
和打印计数。我的猜测是它将是2,其中之一不可见。如果需要,可以使用Selenium将其进一步过滤为仅可见链接。
您将在BackSlash的CSS选择器答案中遇到相同的问题。您可以稍作调整,并使用CSS选择器定位器解决此问题
#hdtb-msb-vis a[href*='tbm=isch']
以下是一些CSS参考链接,可帮助您入门:W3C reference,SauceLabs CSS Selectors tips和Taming Advanced CSS Selectors。