不允许使用复合类名错误Web驱动程序

tjrkku2a  于 2022-09-20  发布在  Maven
关注(0)|答案(6)|浏览(147)

我收到以下错误:
“不允许复合类名”

尝试访问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"));

这是链接中给出的解决办法,但仍然没有成功。您的帮助我们将不胜感激。

gwo2fgha

gwo2fgha1#

如果元素有多个类,则可以使用“by”访问该元素:

from selenium.webdriver.common.by import By
driver.findElement(By.cssSelector(".alert.alert-success"));
kcwpcxri

kcwpcxri2#

您可以使用

driver.findElement(By.className("alert-success"));

driver.findElement(By.className("alert"));

因为现在Selify不支持多个类名。如果你的类名中包含空格,WebDriver会把它看作是一个“复合选择器”。您可以使用css Selector或id来选择webelement。

vsnjm48y

vsnjm48y3#

如果必须使用类名,可以使用以下方法:

1)css选择器

driver.findElement(By.cssSelector(".alert.alert-success");

2)使用XPath

driver.findElement(By.xpath("//div[@class='alert alert-success']"))

尝试避免使用XPath,而使用CSS选择器。

qv7cva1a

qv7cva1a4#

该问题是由于按类名查找的工作方式造成的。

代码中的类名是class="alert alert-success"

如果类名中有空格,则会出现上述错误。您可以通过使用ID、CSS、XPath、正则表达式或任何其他元素查找器方法来简单地解决这个问题。

您需要使用类名还是可以使用其他方法?如果需要使用类名,请让我知道。

xytpbqjk

xytpbqjk5#

也可以使用类名来完成,如下所示:

driver.find_element_by_class_name("alert")

driver.find_element_by_class_name("alert-success")

您可以从由空格分隔的两个或多个类名中选择任何类名,它将工作得很好。

vlf7wbxs

vlf7wbxs6#

大多数时候,任何元素的类名属性都有一组类名。LIKE class=‘ALERT-SUCCESS另一个类名’

如果您使用css选择器,那么只需删除类名之间空格并创建如下所示的类名:driver.findElement(By.cssSelector(“.alert.alert-success.another.class.name”)

。=>表示类

=>表示ID

用于css选择器。

相关问题