更新2:
这里发生了一些非常奇怪的事情......
与我之前的代码相比,我想知道它到底是什么.Text
我找到了一些奇怪的东西第一行代码返回给我A11
并且不知道它来自哪里< / p>
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( “硒” ));
得到此错误:
failed: Assert.IsTrue failed.
答案 0 :(得分:3)
在IE中呈现xpath的方式与在Firefox中的呈现方式不同。所以你的xpath真正可能在IE中捕获完全不同的文本。尝试获取driver.FindElement(By.XPath("//*[@id='ctl00_ContentPlaceHolder1_EditControl1_gv']/tbody/tr[11]/td[3]")).Text
的输出(Console.WriteLine)以查看IE中的输出。
您可能必须为IE定义专用的xpath。
答案 1 :(得分:1)
假设您正在使用java,请尝试使用getText()
String foo = driver.findElement(By.xpath("//*[@id='ctl00_ContentPlaceHolder1_EditControl1_gv']/tbody/tr[11]/td[3]")).getText();
assertEquals(foo, "Selenium");
答案 2 :(得分:0)
Internet Explorer具有与几乎所有其他浏览器不同的XPath读数。 IE5及更高版本已经实现了[0]应该是第一个节点,但是大多数其他浏览器的第一个节点都是[1]。
您需要通过将节点减一来重写XPath表达式。