由Selenium / WebDriver驱动IE的XPath解释

时间:2011-05-04 06:05:32

标签: xpath selenium webdriver

我正在尝试使用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合作,这样就会打开另一个蠕虫病毒。

2 个答案:

答案 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是链接中的文本。