我正在尝试使用Selenium RC和WebDriver(单独)来操作HTML页面。源代码包含:
<a href="/logoff"><span>
<span>L</span>
ogoff
</span>
</a>
我希望定位包含文本“Logoff”的链接,这样即使它们重做跨度,它仍然可以工作。我正在使用XPath,因为它应该在WebDriver和Selenium RC中都有效。这适用于IE,但有点脆弱:
//a[contains(., 'ogoff')]
这会更强大但不起作用:
//a[.='Logoff']
你能解释为什么第二个不起作用吗?特别是,如何将.
解释为字符串,以及Selenium和WebDriver如何做到这一点?
我也试图让Selenium与Firefox合作,这样就会打开另一个蠕虫病毒。
答案 0 :(得分:10)
处理器看到的空格(空格和回车)是重要的并影响a
的计算值。
当您选择此a
*<xsl:value-of select="a"/>*
的值时,结果为:
* L
ogoff
*
如果您使用*<xsl:value-of select="normalize-space(a)"/>*
,结果为:
*L ogoff*
如果您希望能够选择“注销”,则可以使用normalize-space()
,然后使用translate()
将其换行以删除空格:
//a[translate(normalize-space(), ' ','')='Logoff']
答案 1 :(得分:2)
对于Selenium,您可以将其指定为link="Logoff"
,其中Logoff是链接中的文本。