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

IEでのxpathのレンダリング方法は、Firefoxでのレンダリング方法とは異なります。したがって、xpathがIEでまったく異なるテキストをキャプチャしている可能性があります。driver.FindElement(By.XPath("//*[@id='ctl00_ContentPlaceHolder1_EditControl1_gv']/tbody/tr[11]/td[3]")).TextIEで出力を確認するには、のoutput(Console.WriteLine)を取得してみてください。

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]になっています。

ノードを1つ減らして、XPath式を書き直す必要があります。

于 2012-08-17T14:29:34.313 に答える