C#中的Selenium如何根据其值定位此范围?

时间:2017-07-13 15:38:50

标签: 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中是否有等效的标记名?谢谢。

2 个答案:

答案 0 :(得分:1)

回答标题中的问题,可以通过XPath找到包含文字<span>的{​​{1}}:

'129

但我怀疑此数字会发生变化,因此您可能还需要考虑找到其//span[text()='129'] 属性等于<span>的{​​{1}}:

CSS选择器:

inventory

的XPath:

'Livecount'

用法:

span[inventory='Livecount']

解释您的上一个问题,您询问是否可以使用带有自定义标记名称的CSS选择器。这也是可能的。

给出以下HTML:

//span[@inventory='Livecount']

要选择driver.FindElement(By.CssSelector("span[inventory='Livecount']")); driver.FindElement(By.XPath("//span[@inventory='Livecount']")); 元素中的<inventorySearch> <span inventory="Livecount">129</span> </inventorySearch> ,请使用以下CSS选择器:

<span>

答案 1 :(得分:0)

这也可以使用CSS

JQuery有一个:包含伪选择器

即。跨度:包含( '129')

您需要使用Selenium NuGet支持包来获得此功能。

Install-Package Selenium.WebDriver.Extensions

这样可以访问提供伪选择器支持的Sizzle JQuery Selector Engine。