不允许使用硒化合物类名称

Selenium Compound class names not permitted(不允许使用硒化合物类名称)
本文介绍了不允许使用硒化合物类名称的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

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

el1 = driver.find_element_by_id("keyDev-A")el1.click()el2 = driver.find_element_by_class_name(内容")打印(el2.text)

但是,当我试图让 selenium

点击该弹出窗口中的按钮时

el3 = driver.find_element(By.CLASS_NAME, "action-btn cancel alert-display")el3.click()

它会产生一条错误消息:

无效的选择器:不允许复合类名

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

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

解决方案

Leon's注释 导致不再支持复合类名称的正确信息.你可以做的是尝试使用 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']")

I have the below code that clicks on an element to pop up a screen and copy the text in it

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

However, when I tried to get selenium to click on the button within that popup with

el3 = driver.find_element(By.CLASS_NAME, "action-btn cancel alert-display")
el3.click()

It produces an error message:

invalid selector: Compound class names not permitted

This is the HTML that I am trying to get selenium to click on. The Close button.

<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>

How should I be writing el3 in order to click on the Close button?

解决方案

Leon's comment leads to the correct information that compound class names are no longer supported. What you could do instead is try using css selectors. In your case, the following line of code should help you get the element you want :

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

It finds the element with all three classes (action-btn, cancel and alert-display) in the class attribute. Do note that the order of the classes does not matter here and any of the classes may appear anywhere in the class attribute. As long as the element has all three classes, it will be selected. If you want the order of the classes to be fixed, you can use the following xpath :

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

这篇关于不允许使用硒化合物类名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

How to find element by part of its id name in selenium with python(如何使用python在selenium中通过其id名称的一部分查找元素)
NoSuchElementException: Message: Unable to locate element while trying to click on the button VISA through Selenium and Python(NoSuchElementException:消息:尝试通过 Selenium 和 Python 单击 VISA 按钮时无法找到元素) - IT屋-程序员软件开发技术分
Selenium not able to click on Get Data button on using Python(Selenium 在使用 Python 时无法单击“获取数据按钮)
selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element is not clickable with Selenium and Python(selenium.common.exceptions.ElementClickInterceptedException:消息:元素点击被拦截:元素不可点击
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element while trying to click Next button with selenium(selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:尝试使用 selenium 单
Get original filename google app engine(获取原始文件名 google app engine)