我有这个HTML:
<class = "abc pqr"></class>
因此,如果我执行driver.findElement(By.className("abc")
,WebDriver是否会在DOM
结构中找到该类?
我想知道的是,如果我们只提供类的子字符串,By.className
是否有效?
答案 0 :(得分:1)
简短的回答是肯定的! 此案例中By.className("abc")
或By.className("pqr")
完全没问题。
请注意,使用子字符串 。在元素<class = "abc pqr"/>
中,这是一个以空格分隔的类列表!
答案 1 :(得分:0)
如果你仍然需要答案 - 是的,它会。如果你试图像By.classname("abc pqr")
那样搜索它,它就不会发生。
如果要按类的一部分搜索,请使用css选择器。想象一下你有
<a class="superclass secondaryclass">
然后你可以找到它:
By.cssSelector("//a[class*=super]")
因为*=
是通过子串搜索(非严格的)。
如果您仍想通过xpath和substring进行搜索,那么您可以执行以下操作:
//a[substring(@class, string-length(@class) - 5) = 'super']
或尝试使用a[contains(@class, 'super')]
有太多方法可以做到这一点:)
答案 2 :(得分:-1)
简答:不。您必须使用以下方法之一根据多个类名选择元素。
driver.find(By.cssSelector(".abc.pqr"));
或
driver.find(By.xpath("//*[@class='abc pqr']"));