selenium库是一套Web自动化测试工具,有很多功能,它可以帮我们模拟在浏览器输入内容和模拟鼠标点击浏览器按钮.
关注,转发,私信小编“01”即可免费领取Python学习资料!
本文介绍Python调用Selenium实现模拟浏览器输入和点击的步骤和方法,并给出最易出现的BUG的解决办法
一、安装Selenium
二、下载c
需要下载与浏览器版本对应的c到代码所在目录下,
下载地址:
(注意:运行代码时如果没有下载与自己的浏览器版本匹配的 c 放到代码同级目录下,
会报错: : Message: 'chromedriver' executable needs to be in PATH. Please see )
三、编写代码实现模拟浏览器
本文以登录淘宝网首页为例,在搜索栏输入搜索内容,点击“搜索”按钮,(网站加载需要时间,受网速等影响),加载完成后会进入授权登录页面
在提示扫码登录的界面,点击“账号密码登录”(换了页面,还是可以继续点击和输入内容),具体代码解释见注释
上面的代码声明一个Chrome浏览器,通过browser对象获取浏览器标签进行输入内容和点击,sleep()模拟浏览器加载的过程
按照上面的步骤配置webdriver和编写代码即可以实现Selenium的demo.
BUG描述:
使用webdriver声明浏览器后,打开网页,然后使用find_element_by_class_name('class_name')选择html标签时,报错:
Message: invalid selector: Compound class names not permitted
消息:无效选择器:不允许使用复合类名
原因分析:
我们通过F12从浏览器获取到的html元素的class name中间有空格,所以提示我们:类名不合法,不允许的类名
解决方法:
方法1.html元素的class name中间的空格是表示父级和子级的关系,我们调用以上方法时,使用类名的最后一段就可以了
如选择html标签: <button type="submit" class="btn-search tb-bg">
我们通过find_element_by_class_name('btn-search tb-bg') 选择button标签,就会报错
改成find_element_by_class_name('tb-bg')就可以选择到需要的button标签(btn-search和tb-bg中间有空格)
但是要确认tb-bg不是被很多个标签重复使用的类名,能确保选择到自己要选的那个标签
方法2.webdriver有很多方法,使用其他方法:
find_element_by_id(), find_element_by_name(), find_element_by_css_selector()等,如果需要选择的html标签有id属性,优先通过id选择,或者通过name属性,除非这个标签只有class属性时,再使用class的方法(换种思路),就可以避免以上问题了.