不允许使用Selenium Compound类名

jak*_*ong 26 python selenium

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

el1 = driver.find_element_by_id("keyDev-A")
el1.click()
el2 = driver.find_element_by_class_name("content")
print(el2.text)
Run Code Online (Sandbox Code Playgroud)

但是,当我试图selenium单击该弹出窗口中的按钮时

el3 = driver.find_element(By.CLASS_NAME, "action-btn cancel alert-display")
el3.click()
Run Code Online (Sandbox Code Playgroud)

它会产生一条错误消息: invalid selector: Compound class names not permitted

这是我试图selenium点击的HTML .该Close按钮.

<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>
Run Code Online (Sandbox Code Playgroud)

我应该怎么写el3才能点击关闭按钮?

sag*_*wa1 45

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

el3 = driver.find_element_by_css_selector(".action-btn.cancel.alert-display")
Run Code Online (Sandbox Code Playgroud)

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

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