![]() Selenium库是一套Web自动化测试工具,有很多功能,它可以帮我们模拟在浏览器输入内容和模拟鼠标点击浏览器按钮. 本文介绍Python调用Selenium实现模拟浏览器输入和点击的步骤和方法,并给出最易出现的BUG的解决办法 ![]() Python学习交流群:1004391443,这里有资源共享,技术解答,还有小编从最基础的Python资料到项目实战的学习资料都有整理,希望能帮助你更了解python,学习python。 一、安装Selenium pip install Selenium ![]() 二、下载chromedriver.exe 需要下载与浏览器版本对应的chromedriver.exe到代码所在目录下, 下载地址: http://chromedriver.storage./index.html (注意:运行代码时如果没有下载与自己的浏览器版本匹配的 chromedriver.exe 放到代码同级目录下, 会报错: selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home) ![]() 三、编写代码实现模拟浏览器 本文以登录淘宝网首页为例,在搜索栏输入搜索内容,点击“搜索”按钮,(网站加载需要时间,受网速等影响),加载完成后会进入授权登录页面 在提示扫码登录的界面,点击“账号密码登录”(换了页面,还是可以继续点击和输入内容),具体代码解释见注释 from selenium import webdriverimport time # 声明浏览器(这里用chrome浏览器)browser = webdriver.Chrome()try: # get打开指定的url,传入要打开的url,以淘宝网为例 browser.get('https://www.taobao.com/') # 通过find_element_by_name获取到网页标签,send_keys()输入内容,在搜索栏输入python browser.find_element_by_name('q').send_keys('python') time.sleep(1) ''' 通过find_element_by_class_name获取到网页标签,click()点击 注意class名中的空格是表示父子级的关系,如果有空格,则class_name只取最后一段,然后还要避免有同名的class,不要取错了 为了避免取错标签,优先根据id或name等其他方式取 如:淘宝网的搜索按钮class name为btn-search tb-bg,用btn-search tb-bg取时报错,用tb-bg取则成功 ''' # browser.find_element_by_class_name('btn-search tb-bg').click() # 报错 browser.find_element_by_class_name('tb-bg').click() # 成功 time.sleep(5) # 点击'密码登录'按钮 # browser.find_element_by_class_name('forget-pwd J_Quick2Static').click() # 报错 browser.find_element_by_class_name('J_Quick2Static').click() # 正常 time.sleep(10) browser.close()except Exception as e: print('模拟登录失败:{}'.format(e)) browser.close() 上面的代码声明一个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标签: |
|
来自: flyk0tcfb46p9f > 《AI》