我收到以下错误:
“不允许复合类名”
尝试访问Web元素时,元素的类名中有空格。Web元素的页面源代码如下所示。
driver.findElement(By.className("alert alert-success"));
<div class="alert alert-success" alert-dismissable"="" id="58417" style="display: none;">
<button type="button" class="close hide-panel close-icon-58417" data-dismiss="alert" aria-hidden="true" style="display: inline-block;">×</button><span id="caret-58417" class="notification-caret caret-58417"></span>
<div class="hide-panel close-icon-58417" id="58417" style="display: block;">
<span class="glyphicon glyphicon-ok-sign"></span><strong>Success</strong> KeyLinks Updated Successfully
<div class="notification-panel-body panel-body-58417">REST Invocation Success</div>
</div>
</div>
我尝试通过css路径查找元素,如下所示。但元素不能用这个进行搜索。
driver.findElement(By.cssSelector(".alert alert-success"));
这是链接中给出的解决办法,但仍然没有成功。您的帮助我们将不胜感激。
6条答案
按热度按时间gwo2fgha1#
如果元素有多个类,则可以使用“by”访问该元素:
kcwpcxri2#
您可以使用
或
因为现在Selify不支持多个类名。如果你的类名中包含空格,WebDriver会把它看作是一个“复合选择器”。您可以使用css Selector或id来选择webelement。
vsnjm48y3#
如果必须使用类名,可以使用以下方法:
1)css选择器:
2)使用XPath
尝试避免使用XPath,而使用CSS选择器。
qv7cva1a4#
该问题是由于按类名查找的工作方式造成的。
代码中的类名是
class="alert alert-success"
如果类名中有空格,则会出现上述错误。您可以通过使用ID、CSS、XPath、正则表达式或任何其他元素查找器方法来简单地解决这个问题。
您需要使用类名还是可以使用其他方法?如果需要使用类名,请让我知道。
xytpbqjk5#
也可以使用类名来完成,如下所示:
或
您可以从由空格分隔的两个或多个类名中选择任何类名,它将工作得很好。
vlf7wbxs6#
大多数时候,任何元素的类名属性都有一组类名。LIKE class=‘ALERT-SUCCESS另一个类名’
如果您使用css选择器,那么只需删除类名之间空格并创建如下所示的类名:driver.findElement(By.cssSelector(“.alert.alert-success.another.class.name”)
。=>表示类
=>表示ID
用于css选择器。