1

C#文字列変数をxpathセレクターに渡すことはできますか?これはセレン単体テスト用です。私はこのようなことをしたい:

string myText = "foo";    
Assert.IsTrue(Browser.IsElementPresent("//option[contains(text(), $myText)]"));
4

4 に答える 4

6

string.Formatを使用すると機能するはずです:

Assert.IsTrue(Browser.IsElementPresent(string.Format("//option[contains(text(), {0}]",myText)));
于 2012-05-08T14:26:57.477 に答える
4

はい、String.Formatを使用できます

string myText = "foo";    
Assert.IsTrue(Browser.IsElementPresent(String.Format("//option[contains(text(), {0})]", myText)));
于 2012-05-08T14:28:05.290 に答える
0

これはすでに回答済みですが、次のこともできます。

Assert.IsTrue(Browser.IsElementPresent(String.Format("//option[contains(text(), " + myText + ")]")));

これが機能するのは、C#が各文字列を他の文字列の末尾に追加するだけだからです。

于 2012-05-09T07:46:55.330 に答える
0

ご回答ありがとうございます!テーブルで検索を実行していましたが、上記の解決策が機能しませんでした。おそらく、文字列にハイフン、小数点、および「TV-8888-ZIP-54-EN-CTR.05021031」のような数字が含まれていたためです。

文字列をC#変数IDに割り当てました。上記の答えは、小数点と数字が原因で失敗したと思います。ナシブカさんの答えを使って、一重引用符を明示的に追加する必要がありました。動作中のFindステートメント(最初の列にID文字列を含む同じ行からテーブルの3番目の列の値を取得する)は、次のようになります。

value = driver.FindElement(By.XPath(string.Format("//td[contains(text()," + "'" + ID + "'" + ")]/following-sibling::td[2]"))).Text;
于 2016-05-09T19:29:05.960 に答える