我有下面的代码,点击一个元素弹出一个屏幕并复制其中的文本
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/