我有以下html:
<p class="k-reset"><a class="k-icon k-i-expand" href="#" tabindex="-1"></a>Unit: QA Room: 1</p>
我似乎无法获得有效的语法来单击该元素。我尝试了以下方法:
IWebElement webElement5 = Driver.Instance.FindElement(By.XPath("//a[@class='k-icon k-i-expand']"));
webElement5.Click();
IWebElement webElement5 = Driver.Instance.FindElement(By.XPath("//p[text(), 'Unit: QA Room: 1']"));
webElement5.Click();
当我尝试使用text()时,收到一条错误消息,指出它不是有效的XPath表达式。我在互联网上看到的每个地方都使用该语法。我对c#/ Selenium / XPath值非常陌生。 非常感谢您的帮助。
答案 0 :(得分:2)
您混合了contains
"//p[contains(text(), 'Unit: QA Room: 1')]"
对于直接匹配,请使用=
"//p[text()='Unit: QA Room: 1']"
答案 1 :(得分:-1)
要单击元素,可以使用以下任一解决方案:
CssSelector :
var self = Assembly.GetExecutingAssembly().Location;
Console.WriteLine("Press a key to restart...");
Console.ReadKey();
Process p = new Process();
p.StartInfo.FileName = self;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = false;
p.StartInfo.RedirectStandardInput = false;
p.Start();
Thread.Sleep(500);
Environment.Exit(0);
XPath 1 :
$('#id-of-form-to-validate').validate({
ignore: ".ql-container *"
// continue validation
});
XPath 2 :
Driver.Instance.FindElement(By.CssSelector("p.k-reset>a.k-icon.k-i-expand")).Click();