selenium - 如何在 C# 中使用 VS 中的 Selenium webdriver 中的相对 Xpath
问题描述
我正在使用我们的网站进行自动化项目。有一个输入框我需要将消息传递给它,但是绝对 Xpath 看起来总是在变化,所以我不能使用它。
像这样的相对 Xpath
//*[@id="_ariaId_129"]/div/div/div[1]/div/span/div/form/input
像这样的绝对 Xpath
/html/body/div[13]/div/div[2]/div[3]/div/div/div[1]/div/span/div/form/input
如果我在 VS 中使用它,它总是在 VS 中给我一条错误消息,我使用的是来自 Chrome 的相对 Xpath 副本。
如果我使用 Absolute Xpath,它可以工作,但正如我所说,下次我测试它时它可能会改变。
有人可以帮我看看在 VS 中使用相对 Xpath 的正确格式是什么?我试着像下面这样写,它们都不起作用。我试图在 Xpath 中将“”更改为 '',在 VS 中没有错误,但找不到元素。
[FindsBy(How = How.XPath, Using = "//*[@id="_ariaId_129"]/div/div/div[1]/div/span/div/form/input")]
或者[FindsBy(How = How.XPath, Using = "//input[@id='_ariaId_129']")]
解决方案
假设父元素下只有一个输入(带有 Id 的那个),您可以轻松地使用:
//*[@id="_ariaId_129"]//输入
如果不是这种情况,那么您必须找到一个更接近您想要选择的 id,或者直接将一个添加到您想要与之交互的输入中。
对于带有错误的屏幕截图,这是因为您有未转义的双引号。你必须这样做:
"//*[@id=\"_ariaId_129\"]//输入"
或者
"//*[@id='_ariaId_129']//输入"
推荐阅读
- python-3.x - 如何使用 Python Docx 将图像从一个文档中的表格复制到另一个文档
- r - “选择了未知的列”
- python - 有没有办法在 Google Cloud Datastore 中执行阻塞 get() 调用?
- c# - 在每次迭代中处理内存中的对象
- sql - Oracle SQL - 在交货行后选择第一个检验行
- java - 使用 Jackson 将转义的 json 解析为 JsonNode
- java - 如何从段落中提取恒定长度的单词?
- c# - 检查数据库中是否存在项目列表,如果不存在则将其添加到数据库
- python-3.x - Setuptools:使用具有不同所需包的构建变体
- spring - 使用 HTTP/REST 保护单一资源