我有下面的代码,单击一个元素弹出一个屏幕并复制其中的文本
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。按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>
我应该如何编写el3
才能单击“关闭”按钮?
Leon's comment得到了不再支持复合类名的正确信息。你可以试着使用css选择器。在您的例子中,以下代码行应该可以帮助您获得所需的元素:
它在类属性中查找具有所有三个类(action btn、cancel和alert display)的元素。请注意,类的顺序在这里并不重要,任何类都可能出现在类属性中的任何位置。只要元素有三个类,它就会被选中。 如果要固定类的顺序,可以使用以下xpath:
这个问题我来晚了。但我也找到了一个解决办法,当您不熟悉Xpath时,可以将复合类作为字符串处理,使用tag_name和get_attribute('class')。它需要更多的代码行,但它是直截了当的,适合像我这样的初学者。
相关问题 更多 >
编程相关推荐