C# 通过xpathC查找Web驱动程序
我需要用C在webdriver中创建一个测试,我在其中单击一个链接,该链接具有如下结构的菜单中的文本:C# 通过xpathC查找Web驱动程序,c#,xpath,hyperlink,webdriver,C#,Xpath,Hyperlink,Webdriver,我需要用C在webdriver中创建一个测试,我在其中单击一个链接,该链接具有如下结构的菜单中的文本: <ul style="overflow: hidden"> <li> <ul class"menu" style="overflow: hidden"> <li class="class_li"> <a href="/level1/leve2">
<ul style="overflow: hidden">
<li>
<ul class"menu" style="overflow: hidden">
<li class="class_li">
<a href="/level1/leve2">
<span class="class_span">Text</span>
</a>
</li>
</ul>
</li>
<li />
<li />
</ul>
IWebElement element = driver.FindElement(By.XPath("//a[span/text()='text_from_upper_node']"));
Actions action = new Actions(driver);
action.MoveToElement(element).Build().Perform();
driver.FindElement(By.XPath("//a[span/text()='text_from_link_I_want_to_click']")).Click();
class_li和class_span被多次使用。我不能修改html代码
我尝试了几个不同的xpath语句,但每次我得到InvalidSelectorException都没有得到处理。如何访问我的链接并单击它?下面的xpath选择第一个链接,该链接具有文本的直接子范围 我不是硒专家,但你应该能够做到:
driver.FindElement(By.XPath("(//a[span/text()='Text'])[1]")).Click();
好的,我成功了。我使用了基于StuartLC answer的操作和XPath,它看起来像这样:
<ul style="overflow: hidden">
<li>
<ul class"menu" style="overflow: hidden">
<li class="class_li">
<a href="/level1/leve2">
<span class="class_span">Text</span>
</a>
</li>
</ul>
</li>
<li />
<li />
</ul>
IWebElement element = driver.FindElement(By.XPath("//a[span/text()='text_from_upper_node']"));
Actions action = new Actions(driver);
action.MoveToElement(element).Build().Perform();
driver.FindElement(By.XPath("//a[span/text()='text_from_link_I_want_to_click']")).Click();
谢谢你的帮助。干杯如果您想使用多棵树,您可以尝试这样的方法
IList<IWebElement> webElements = WebDriver.FindElements(By.ClassName("class_span"));
网页中的文本是否始终可见,或者您是否必须单击某个链接才能访问它?我需要悬停菜单,然后它从侧面滑动,接下来我需要悬停菜单位置,然后带链接的子菜单滑出。请添加更多HTML片段,从主菜单开始,到要单击的子菜单中的项目,或者到目前为止您所处理的代码段,以采用相同的技巧。此外,如果您可以提供菜单外观的快照,这也会很有帮助