python - 不允许使用 Selenium 化合物类名称

标签 python selenium xpath css-selectors class-names

我有下面的代码,点击一个元素弹出一个屏幕并复制其中的文本

el1 = driver.find_element_by_id("keyDev-A")
el1.click()
el2 = driver.find_element_by_class_name("content")
print(el2.text)

但是,当我试图让 selenium

点击该弹出窗口中的按钮时
el3 = driver.find_element(By.CLASS_NAME, "action-btn cancel alert-display")
el3.click()

它会产生一条错误消息:

invalid selector: Compound class names not permitted

这是我试图让 selenium 点击的 HTML。 关闭按钮。

<div class="nav">
    <span class="action-btn confirm prompt-display">Confirm</span>
    <span class="action-btn cancel prompt-display">Cancel</span>
    <span class="action-btn cancel alert-display">Close</span>
</div>

我应该如何编写 el3 才能点击 关闭 按钮?

最佳答案

Leon's comment导致不再支持复合类名称的正确信息。你可以做的是尝试使用 css 选择器。在您的情况下,以下代码行应该可以帮助您获得所需的元素:

el3 = driver.find_element_by_css_selector(".action-btn.cancel.alert-display")

它在 class 属性中找到具有所有三个类(action-btn、cancel 和 alert-display)的元素。请注意,类的顺序在这里无关紧要,任何类都可能出现在类属性中的任何位置。只要元素具有所有三个类,它就会被选中。 如果要固定类的顺序,可以使用以下 xpath :

el3 = driver.find_element_by_xpath("//*[@class='action-btn cancel alert-display']") 

关于python - 不允许使用 Selenium 化合物类名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37771604/

相关文章:

javascript - Protractor - 使用 ng-change 时,元素在 (x,y) 点不可点击

php - 使用 Xpath 获取第一个祖先

R 中的 XML 包 - readHTMLTable 和多行类

python - 如何根据特定规则标记一系列值?

python - 从字符串中解析日期/时间

java - Selenium 错误: "org.openqa.selenium.SessionNotCreatedException: session not created from tab crashed" after update electron engine to 9. 0.3

java - 下载文件存储位置和处理使用带有 JAVA 的 selenium webdriver 下载弹出窗口

python - 如何找到Selenium WebDriver的XPath?

python - 修复 Tkinter 中 RadioButtons 的设计

java - Python 客户端不接收来自 Spring websocket 服务器的消息