我一直在尝试使用各种定位器,但是找不到一个简单的解决方案来定位C#Selenium中此跨度内的数字(动态和更改每个页面加载)。我只是试图找到跨度本身开始。
<span inventory="Livecount">129</span>
我得到NoSuchElement异常,即无法定位元素。
最后一个与上下文相关的事情:这个范围和它的数字存在于一个小部件中,我已经能够找到它。该小部件没有唯一的类或id,但是没有自定义标记名,所以我只能使用FindElement(By.TagName(“inventorySearch”))可靠地找到它,这是有效的。如果有一种方法我可以使用CSS选择器来启动该窗口小部件元素(父窗口) - 然后链接到它内部的跨度(每个实例中只有一个跨度,因此很容易找到),会解决它。我的问题是,我不知道如何在Seleniums CSS选择器中指示标记名(即类和Id有他们的。#符号 - 在C#Selenium中是否有等效的标记名?谢谢。
答案 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。