c# - C# 中的 Selenium 如何根据其值定位此跨度?

标签 c# css selenium css-selectors ui-automation

我一直在尝试各种定位器,但找不到一个简单的解决方案来在 C# Selenium 的这个范围内定位数字(这是动态的并且改变每个页面加载)。我只是试图找到跨度本身。

<span inventory="Livecount">129</span>

我收到 NoSuchElement 异常,即无法定位元素。

最后一个与上下文相关的事情:这个跨度及其编号位于一个小部件内,我已经能够很好地找到它。该小部件没有唯一的类或 ID,但有自定义标签名称,因此我只能使用有效的 FindElement(By.TagName("inventorySearch")) 可靠地找到它。如果有一种方法我可以使用 CSS 选择器从那个小部件元素(父元素)开始 - 然后向下链接到它内部的跨度(每个实例中只有一个跨度,因此很容易找到),那会解决它。我的问题是,我不知道如何在 Seleniums CSS 选择器中指示标记名(即类和 Id 有它们的 .# 符号 - 在 C# Selenium 中是否有等效的标记名?谢谢。

最佳答案

回答标题中的问题,可以找到一个<span>与文本 '129通过XPath :

//span[text()='129']

但是我怀疑这个数字会改变,所以你可能还想考虑找到 <span>它在哪里 inventory属性等于 'Livecount' :

CSS 选择器:

span[inventory='Livecount']

XPath:

//span[@inventory='Livecount']

用法:

driver.FindElement(By.CssSelector("span[inventory='Livecount']"));
driver.FindElement(By.XPath("//span[@inventory='Livecount']"));

转述您的最后一个问题,您询问是否可以使用带有自定义标签名称的 CSS 选择器。这也是可能的。

给定以下 HTML:

<inventorySearch>
    <span inventory="Livecount">129</span>
</inventorySearch>

选择<span><inventorySearch> 内元素,请使用以下 CSS 选择器:

inventorySearch > span

关于c# - C# 中的 Selenium 如何根据其值定位此跨度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45085385/

相关文章:

python selenium 选择值与正则表达式匹配的下拉选项

c# - 写入文本文件

c# - 使用 Uri 的相对路径

c# - 继承和 'Curiously Recurring Template Pattern'

javascript - 如何使用 JavaScript 删除 <div> 元素

css - 为除一个表之外的所有表分配 CSS

java - 如何使用 Java 单击 Selenium Webdriver 中弹出窗口上的按钮

c# - .NET 终结器是否有超时?

html - 针对移动设备和大屏幕尺寸的 CSS 媒体查询

node.js - 如何使用 Cypress 测试登录 GSuite 日历