C# 如何减少Xpath使其更短?

C# 如何减少Xpath使其更短?,c#,selenium-webdriver,xpath,C#,Selenium Webdriver,Xpath,我试图得到一个菜单项的值。如果我放置了详细的Xpath,我可以从下拉列表中选择菜单项 如何使XPath显著缩短? 抱歉,如果这是一个可怕的问题,我正在拔掉我的头发 我使用了完全相同的XPath,但是当我签入时,我的代码被拒绝了 driver.FindElement(By.XPath("/html/body/modal-container/div/div/inv-education-modal/article/div[2]/div/div[1]/div[1]/div/inv-drop-down-s

我试图得到一个菜单项的值。如果我放置了详细的Xpath,我可以从下拉列表中选择菜单项

如何使XPath显著缩短? 抱歉,如果这是一个可怕的问题,我正在拔掉我的头发

我使用了完全相同的XPath,但是当我签入时,我的代码被拒绝了

driver.FindElement(By.XPath("/html/body/modal-container/div/div/inv-education-modal/article/div[2]/div/div[1]/div[1]/div/inv-drop-down-select/section/div/ul/li[3]/a/span"));
实际上,我想传递一个参数,以便它选择相关的下拉值,但它是一个角度站点,因此我不能使用SelectElement。

在您的前面有一个指示

通常,超链接包含和关联的文本,如:

<a href="http://example.com>Click me!</a>
如果您想要下一个
span
-
//a[@href='Click me!']/span

参考资料:


xpath的问题在于它非常依赖于整个页面的确切结构。这使得它非常脆弱——如果结构的任何部分发生变化,你的硒测试就会中断。菜单或菜单项或其近父项是否具有可供使用的
id
class
?我们必须查看相关站点的标记,以告诉您如何收缩XPath。没有比您提供的XPath表达式更短的XPath表达式。当应用于某些已知结构的特定文档时,还有其他表达式可能会给出相同的结果,但等价性只适用于某些源文档,而不适用于其他文档。共享HTML。没有它,我们就无法构造相对XPath。
//a[@href='Click me!']