一尘不染

如何避免Page Object中的Composite Class name错误?

selenium

当我尝试使用class = "country name"在页面对象中具有空格的类名称时,我得到:

Compound class names not permitted Selenium::WebDriver::Error::UnknownError)

我该如何使用具有空格的类名。

例如:

class = "country name"

阅读 237

收藏
2020-06-26

共1个答案

一尘不染

改用CSS选择器:

.country.name

需要注意的重要一点是该示例是错误的!If "country name"的意思是一个国家的名称。类名中不能包含空格。实际上,该class属性是用空格分隔的类列表。这意味着,如果您有一个类country name,则不是一个类,而是您的元素所属的 两个 不同的类-第一个是country,第二个是name

因此,如果错误,请修复您的课程。如果不是,则使用CSS选择器,这是匹配多个类的唯一可靠方法(除了非常长且复杂的XPath表达式)。不要将简单的XPath表达式或CSS选择器与朴素的属性比较(//*[@class='country name']*[class='country name'])配合使用,这是完全错误的。

2020-06-26