当属性包含多个单词时,我有一个按属性选择节点的问题。例如:

<div class="atag btag" />

这是我的xpath表达式:

/ / * [@class =’atag’]

这个表达式适用于

<div class=“atag” />

但对于前面的例子不是这样。我如何选择<div>?


当前回答

你可以试试下面的方法

By.CssSelector(“div.atag.btag”)

其他回答

下面是一个找到className包含atag的div元素的例子:

//div[contains(@class, 'atag')]

下面是一个找到className包含atag和btag的div元素的例子:

//div[contains(@class, 'atag') and contains(@class ,'btag')]

然而,它也会找到部分匹配,如class="catag bobtag"。

如果你不想要部分匹配,请看下面bobince的答案。

工作的2.0 XPath:

//*[tokenize(@class,'\s+')='atag']

或者用一个变量:

//*[tokenize(@class,'\s+')=$classname]

我来这里寻找Ranorex Studio 9.0.1的解决方案。这里还没有contains()。相反,我们可以像这样使用regex:

div[@class~'atag']

试试这个://*[contains(@class, 'atag')]

对于包含公共url的链接,必须在变量中控制台。然后按顺序尝试。

webelements allLinks=driver.findelements(By.xpath("//a[contains(@href,'http://122.11.38.214/dl/appdl/application/apk')]"));
int linkCount=allLinks.length();
for(int i=0; <linkCount;i++)
{
    driver.findelement(allLinks[i]).click();
}