C# 中的 Selenium 如何根据其值定位此跨度?
How can Selenium in C# locate this span based on its value?
我一直在尝试各种定位器,但找不到一个简单的解决方案来在 C# Selenium 的这个范围内定位数字(这是动态的并且改变每个页面加载)。我只是想从定位跨度本身开始。
<span inventory="Livecount">129</span>
我收到 NoSuchElement 异常,即无法定位元素。
最后一个与上下文相关的事情:这个跨度及其编号位于一个小部件内,我已经能够很好地找到它。该小部件没有唯一的 class 或 ID,但有自定义标签名称,因此我只能使用 FindElement(By.TagName("inventorySearch")) 可靠地找到它,这有效。如果有一种方法我可以使用 CSS 选择器从那个小部件元素(父元素)开始 - 然后向下链接到它里面的跨度(每个实例只有一个跨度,所以很容易定位),这将解决它。我的问题是,我不知道如何在 Seleniums CSS 选择器中指示标记名(即 classes 和 Id 有它们的 .# 符号 - 在 C# Selenium 中是否有等效的标记名?谢谢。
回答标题中的问题,可以通过 XPath:
找到带有文本 '129
的 <span>
//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 select 或自定义 tag-name。这也是可以的。
给出以下 HTML:
<inventorySearch>
<span inventory="Livecount">129</span>
</inventorySearch>
到 select <inventorySearch>
元素中的 <span>
,使用以下 CSS select 或:
inventorySearch > span
这也可以使用 CSS
JQuery 有一个 :contains 伪选择器
即span:contains('129')
您需要使用 Selenium NuGet 支持包才能获得此功能。
安装包Selenium.WebDriver.Extensions
这可以访问提供伪选择器支持的 Sizzle JQuery 选择器引擎。
我一直在尝试各种定位器,但找不到一个简单的解决方案来在 C# Selenium 的这个范围内定位数字(这是动态的并且改变每个页面加载)。我只是想从定位跨度本身开始。
<span inventory="Livecount">129</span>
我收到 NoSuchElement 异常,即无法定位元素。
最后一个与上下文相关的事情:这个跨度及其编号位于一个小部件内,我已经能够很好地找到它。该小部件没有唯一的 class 或 ID,但有自定义标签名称,因此我只能使用 FindElement(By.TagName("inventorySearch")) 可靠地找到它,这有效。如果有一种方法我可以使用 CSS 选择器从那个小部件元素(父元素)开始 - 然后向下链接到它里面的跨度(每个实例只有一个跨度,所以很容易定位),这将解决它。我的问题是,我不知道如何在 Seleniums CSS 选择器中指示标记名(即 classes 和 Id 有它们的 .# 符号 - 在 C# Selenium 中是否有等效的标记名?谢谢。
回答标题中的问题,可以通过 XPath:
找到带有文本'129
的 <span>
//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 select 或自定义 tag-name。这也是可以的。
给出以下 HTML:
<inventorySearch>
<span inventory="Livecount">129</span>
</inventorySearch>
到 select <inventorySearch>
元素中的 <span>
,使用以下 CSS select 或:
inventorySearch > span
这也可以使用 CSS
JQuery 有一个 :contains 伪选择器
即span:contains('129')
您需要使用 Selenium NuGet 支持包才能获得此功能。
安装包Selenium.WebDriver.Extensions
这可以访问提供伪选择器支持的 Sizzle JQuery 选择器引擎。