【发布时间】:2015-04-15 14:44:54
【问题描述】:
我正在尝试使用
获取以下每个元素element = driver.findElement(By.className("code-list-item code-list-item-public "));
inspect元素的输出如下。
<div class="column one-fourth codesearch-aside"></div>
<div class="column three-fourths codesearch-results">
<div class="sort-bar"></div>
<div id="code_search_results">
<div class="code-list">
<div class="code-list-item code-list-item-public "></div>
<div class="code-list-item code-list-item-public "></div>
<div class="code-list-item code-list-item-public "></div>
<div class="code-list-item code-list-item-public "></div>
<div class="code-list-item code-list-item-public "></div>
<div class="code-list-item code-list-item-public "></div>
<div class="code-list-item code-list-item-public "></div>
<div class="code-list-item code-list-item-public "></div>
<div class="code-list-item code-list-item-public "></div>
<div class="code-list-item code-list-item-public "></div>
</div>
但它失败并引发以下错误。
Caused by: org.openqa.selenium.InvalidSelectorException: The given selector code-list-item code-list-item-public is either invalid or does not result in a WebElement. The following error occurred:
InvalidSelectorError: Compound class names not permitted
For documentation on this error, please visit: http://seleniumhq.org/exceptions/invalid_selector_exception.html
另外,我如何遍历每个类?其中每一个都包含子部分,我想在移至下一个之前单独进一步处理。
【问题讨论】:
-
看看this question的答案
-
所以,当我尝试这个时, element = driver.findElement(By.className("code-list-item"));它可以工作,但是当我尝试使用“code-list-item code-list-item-public”时它不起作用。
-
可能是因为
By.className(...)不接受多个类名,如果需要,请使用我之前建议的方法或尝试用,分隔类名 -
@Zack 错误告诉你到底发生了什么。这是一个复合类,您使用
code-list-item code-list-item-public两个不同类的组合,当您使用code-list-item时,它只是一个类,因为它也是独一无二的,它可以工作
标签: java selenium xpath selenium-webdriver web-scraping