1

更新 2:

这里发生了一些非常奇怪的事情......

与我以前的代码相比,我想知道它到底得到了什么.Text,我发现第一行代码返回给我的东西很奇怪A11,不知道它来自哪里

string _name = driver.FindElement(By.XPath("//*[@id='ctl00_ContentPlaceHolder1_EditControl1_gv']/tbody/tr[11]/td[3]")).Text;

//它失败了,难怪......

Assert.IsTrue(_name.Equals("Selenium"));

但它是如何与 Firefox 一起工作的?

更新:

使用 C#

这是我正在使用的代码,它在 Firefox 上运行良好,但在 IE8 上运行良好

Assert.IsTrue(driver.FindElement(By.XPath("//*[@id='ctl00_ContentPlaceHolder1_EditControl1_gv']/tbody/tr[11]/td[3]")).Text.Equals("Selenium"));

得到这个错误:

 failed: Assert.IsTrue failed. 
4

3 回答 3

3

xpath 在 IE 中的呈现方式与在 Firefox 中的呈现方式不同。因此,您的 xpath 确实有可能在 IE 中捕获完全不同的文本。尝试获取输出(Console.WriteLine)driver.FindElement(By.XPath("//*[@id='ctl00_ContentPlaceHolder1_EditControl1_gv']/tbody/tr[11]/td[3]")).Text以查看 IE 中的输出。

您可能必须为 IE 定义一个专用的 xpath。

于 2012-08-14T20:01:41.297 回答
1

假设您正在使用 java 尝试 getText()

String foo = driver.findElement(By.xpath("//*[@id='ctl00_ContentPlaceHolder1_EditControl1_gv']/tbody/tr[11]/td[3]")).getText();

assertEquals(foo, "Selenium");
于 2012-08-14T17:42:06.423 回答
0

与几乎所有其他浏览器相比,Internet Explorer 对 XPath 的解读不同。IE5 及更高版本已经实现 [0] 应该是第一个节点,但是大多数其他浏览器都将第一个节点作为 [1]。

您需要通过将节点减一来重写您的 XPath 表达式。

于 2012-08-17T14:29:34.313 回答