当前位置: 首页 > 面试题库 >

在C#中使用Selenium通过局部ID查找元素

籍兴文
2023-03-14
问题内容

我正在尝试查找具有动态生成ID的元素。字符串的最后一部分是常量(“
ReportViewer_fixedTable”),因此我可以使用它来定位元素。我试图在XPath中使用正则表达式:

targetElement = driver.FindElement(
    By.XPath("//table[regx:match(@id, "ReportViewer_fixedTable")]"));

并通过CssSelector定位:

targetElement = driver.FindElement(
    By.CssSelector("table[id$='ReportViewer_fixedTable']"));

都不行。任何建议,将不胜感激。


问题答案:

那是因为需要修改css选择器,而您几乎就在那里…

driver.FindElement(By.CssSelector("table[id*='ReportViewer_fixedTable']"))`

从https://saucelabs.com/blog/selenium-tips-css-selectors-in-selenium-
demystified中

css=a[id^='id_prefix_']

id开头的文本链接id_prefix_

css=a[id$='_id_sufix']

以开头的链接,id其文本为_id_sufix

css=a[id*='id_pattern']

与的链接id包含文本id_pattern

您正在使用一个后缀,我假设该后缀不是您应该使用的部分链接文本标识符(除非我看到了您的html,这意味着下次尝试显示您的html)。*=在任何情况下都是可靠的。



 类似资料:
  • 问题内容: 以下定位技术之间有什么区别? 而且,从 性能角度来看 ,哪种方法是通过id定位元素的最快方法? 问题答案: 您的问题很难回答,肯定会给出一个结论性的答案。实际上,我很想将此问题标记为“太宽泛”,其他答案和评论也支持该问题。 以您的为例。纵观Selenium来源, 大多数 驱动程序只是获取您提供的ID,然后将其传递给有线协议: 如您所知,每个浏览器供应商都在单独的二进制文件中实现自己的有

  • 问题内容: 我需要将数据发布到php页面,然后我想获取响应中某个div的文本,但似乎无法正确设置。我对jQuery不太满意,但是我通常可以很快地解决问题……我已经花了一分钟的时间,尝试了所有我发现的东西……我想我只是缺少了正确的东西组合。 这是输出,红色框是我想要的响应… !! [这张照片看起来真的很小……当我拍的时候并不是那么小。我希望它仍然可读] [1] 这样做: 回应是… 我尝试删除样式部分

  • 问题内容: 工作代码1: 工作代码2: 问题答案: 初始选择器的问题是缺少选择器的前面。在告诉XPath来搜索整个HTML树。 这应该可以解决问题: 如果要查找元素的子代,请改用,例如 如果要查找包含 文本 而不是href属性的链接,则可以使用

  • 我还尝试使用CSSSelector: 但WebDriver不断抛出一个异常,说明它无法找到该元素。有什么建议可以是什么问题吗?

  • 我正在尝试从一个搜索结果页面定位所有元素,并将它们放在一个列表中。第一个问题是找到所有的元素。我没有问题找到一个特定的元素: