对于出现消息:无效的选择器:不允许使用复合类名的问题?
该页面解析:
原始代码:
self.driver.find_element_by_class_name('s-btn btn-ok').click()
问题:代码出现如下清空:
Traceback (most recent call last):
File "D:\CollectionOverview\unittest\pandabus_unittest\pandabus_unittest\testcase\test_login_baidu.py", line 151, in test_loginBtn self.driver.find_element_by_class_name('s-btn btn-ok').click()
File "D:\python\p\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: Compound class names not permitted (Session info: chrome=74.0.3729.108) (Driver info: chromedriver=2.43.600210 (68dcf5eebde37173d4027fa8635e332711d2874a),platform=Windows NT 6.1.7601 SP1 x86_64)
解决方法:
修改后的代码:
self.driver.find_element_by_css_selector("[class='s-btn btn-ok']").click()
或者:
self.driver.find_element_by_css_selector(".s-btn btn-ok").click()
总结:
在获取包含多个class名称的tag对象时,建议使用:
find_element_by_css_selector(".xx.xxx.xxxxx")
或者
find_element_by_css_selector("[class='xx xxx xxxxx']")