selenium 使用随笔
今天闲来无事,有朋友问到,如何使用selenium。于是便便写了个简单的脚本,用于讲解其基础用法。
selenium常用作web自动化测试。通过跟python或其他语言的结合,可以驱动浏览器,并在浏览器上进行以往需要人工点击或者输入的操作(如输入文字,点击按钮等等)
一 安装
1 安装selenium
目前selenium的最新版本为3.5.0,使用python的同学,安装起来非常方便,只需要以下一条语句:
pip install selenium
2 安装浏览器对应的插件,本例中使用的是win7b4bit,Firefox浏览器,所以要下载对应的驱动:geckodriver-v0.18.0-win64.zip。以下是下载的地址
https://github.com/mozilla/geckodriver/releases
下载之后,解压,并将目录添加到系统的环境变量中。由于我偷懒,这一步没有执行,直接在代码中指定了geckdriver所在的目录。
二 实例
本实例中,访问淘宝的注册页面,并进入到手机验证码的页面。
1 要解决的问题:
淘宝注册页面的主页,有一个协议弹出框:
点击“同意协议按钮后”,在页面中需要输入手机号,滑动解锁,点击“下一步”的按钮
2 代码及注释
1 # -*- coding: utf-8 -*- 2 3 from selenium import webdriver 4 from selenium.webdriver import ActionChains #用于移动滑块 5 import time 6 7 #初始化驱动,并且打开网页 8 driver = webdriver.Firefox(executable_path='D:/geckodriver/geckodriver.exe') 9 driver.get('https://reg.taobao.com/member/reg/fill_mobile.htm') 10 11 #点击确认按钮 12 alert = driver.find_element_by_id("J_AgreementBtn") 13 alert.click() 14 15 #填入手机号 16 phone_input = driver.find_element_by_id("J_Mobile") 17 phone_input.clear() 18 phone_input.send_keys("135XXXXXXXX") 19 20 #移动滑块 21 source = driver.find_element_by_id("nc_1_n1z") 22 target = driver.find_element_by_xpath('//span[@data-nc-lang="_startTEXT"]') 23 action_chains = ActionChains(driver) 24 25 # 先选中滑块并按住鼠标左键,然后移动滑块 26 action_chains.click_and_hold(source).perform() 27 action_chains.move_by_offset(300,0).perform() 28 time.sleep(2) 29 30 #注意,以下使用的是css_selector,因为使用id的话,会定位到未启用的按钮上而出错 31 #在本例中,此按钮未启用前的class为"btn btn-large tsl btn-disabled" 32 next_button = driver.find_element_by_css_selector('[class="btn btn-large tsl"]') 33 next_button.click()