我正在测试的网页html的某些部分看起来像这样
<div id="twoWideCallouts">
<div class="callout">
<a target="_blank" href="http://facebook.com">Facebook</a>
</div>
<div class="callout last">
<a target="_blank" href="http://youtube.com">Youtube</a>
</div>
我要检查使用selenium,当我点击文本时,打开的URL与href中给出的相同,而不是错误页面。
使用Xpath我写了以下命令
//i is iterator
selenium.getAttribute("//div[contains(@class, 'callout')]["+i+"]/a/@href")
然而,这非常慢,并且对于某些链接不起作用。通过阅读本网站上的许多答案和评论我已经知道CSS loactors更快更清洁,所以我再次写作
css = div:contains(callout)
首先,我无法触及锚标签。
其次,此页面可以包含id = callout的任意数量的div。使用xpathcount我可以得到这个的计数,我将迭代该计数并执行href检查。如何使用CSS定位器完成类似的事情?
任何帮助都将不胜感激。
修改
我可以使用定位器css=div.callout a
点击链接,但是当我尝试使用String str = "css=div.callout a[href]";
selenium.getAttribute(str);
读取href值时。我得到错误 - 找不到元素。控制台描述如下。
19:12:33.968 INFO - Command request: getAttribute[css=div.callout a[href], ] on session
19:12:33.993 INFO - Got result: ERROR: Element css=div.callout a[href not found on session
我试图像这样使用xpath获取href属性
"xpath=(//div[contains(@class, 'callout')])["+1+"]/a/@href" and it worked fine.
请告诉我相应的CSS定位器应该是什么。
答案 0 :(得分:0)
对于问题的第一部分,请将您的标识符锚定在超链接上:
css=a[href=http://youtube.com]
为了实现DOM中元素的计数,基于CSS选择器,这里是excellent article。
答案 1 :(得分:0)
应该是 -
css = div:contains(callout)
你注意到“:”而不是“。”你用过吗?
对于CSSCount,这可能会有所帮助 -
#另一方面,您是否看到第51区的新硒站点提案 - http://area51.stackexchange.com/proposals/4693/selenium。
#答案 2 :(得分:0)
要阅读我使用css=div.callout a@href
的属性并且它有效。问题是在属性名称周围使用方括号。