我可以将 C# 字符串变量传递给 xpath 选择器吗?这是一个硒单元测试。我想做这样的事情:
string myText = "foo";
Assert.IsTrue(Browser.IsElementPresent("//option[contains(text(), $myText)]"));
使用 string.Format 应该可以工作:
Assert.IsTrue(Browser.IsElementPresent(string.Format("//option[contains(text(), {0}]",myText)));
是的,你可以使用String.Format
string myText = "foo";
Assert.IsTrue(Browser.IsElementPresent(String.Format("//option[contains(text(), {0})]", myText)));
我看到这已经得到回答,但你也可以这样做:
Assert.IsTrue(Browser.IsElementPresent(String.Format("//option[contains(text(), " + myText + ")]")));
这是可行的,因为 C# 只会将每个字符串附加到另一个字符串的末尾。
谢谢您的回答!我在表格中进行查找,上述解决方案对我不起作用,可能是因为我的字符串包含连字符、小数点和如下数字:“TV-8888-ZIP-54-EN-CTR.05021031”
我将字符串分配给 C# 变量 ID。我怀疑,由于小数点和数字,上面的答案失败了。使用 Nashibukasan 的回答,我必须明确添加单引号。有效的 Find 语句(从包含第一列中的 ID 字符串的同一行获取表的第三列中的值)最终看起来像这样:
value = driver.FindElement(By.XPath(string.Format("//td[contains(text()," + "'" + ID + "'" + ")]/following-sibling::td[2]"))).Text;