我一直在尝试各种定位器,但找不到一个简单的解决方案来在 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/