当我尝试使用class = "country name"
在页面对象中有空格的类名时,我得到:
Compound class names not permitted Selenium::WebDriver::Error::UnknownError)
如何使用有空格的类名。
例如:
class = "country name"
当我尝试使用class = "country name"
在页面对象中有空格的类名时,我得到:
Compound class names not permitted Selenium::WebDriver::Error::UnknownError)
如何使用有空格的类名。
例如:
class = "country name"
改用 CSS 选择器:
.country.name
需要注意的重要一点是,这个例子是错误的!如果"country name"
是一个国家的名字,那就是。类名中不能有空格。实际上,该class
属性是一个以空格分隔的类列表。这意味着如果你有一个类country name
,它不是一个类,而是你的元素所属的两个country
不同的类——第一个是,第二个是name
!
因此,修复你的课程,如果他们错了。如果不是,请使用 CSS 选择器,这是匹配多个类的唯一可靠方法(除了非常长且复杂的 XPath 表达式)。不要使用简单的 XPath 表达式或带有天真的属性比较的 CSS 选择器(//*[@class='country name']
或*[class='country name']
),这是完全错误的。
你可以用这个
By.cssSelector("*[class^='classname']");
^ is for if you entering beginning of the class name,
$ is for if you entering ending of the class name usage example below with sample class name: tech random corner text_left
By.cssSelector("*[class^='tech']");
By.cssSelector("*[class$='text_left']");
您可以使用这些类名之一,例如
:class => 'country'
或者
:class => 'name'
如果它不能帮助你,那么你应该切换到使用其他类型的选择器 :css 或 :xpath
但请注意,如果是 :css 你写:
:css => '.country.name'
如果是 :xpath:
:xpath => '//div[@class='country code']
两者都应该工作
您将不得不从类名中删除空格,在这种情况下,Selenium理论上仍应找到您需要的元素,或者使用 CSS 选择器并将其与句点/句号结合起来以将类名连接在一起。
即,使用 CSS 选择器来定位它:
<div class="country code"></div>
你可以使用:
div.country.code
或者你可以让你的选择器更精细一点:
div[class='country code']
如果您的类名中有空格,您将收到此错误。一种避免的方法是创建一个用于标识元素的 xpath。如果您显示 html,我可以创建 xpath。还可以尝试使用类名,因为多个对象将具有相同的类名。