今天闲来无事,有朋友问到,如何使用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 代码及注释
# -*- coding: utf-8 -*- from selenium import webdriver
from selenium.webdriver import ActionChains #用于移动滑块
import time #初始化驱动,并且打开网页
driver = webdriver.Firefox(executable_path='D:/geckodriver/geckodriver.exe')
driver.get('https://reg.taobao.com/member/reg/fill_mobile.htm') #点击确认按钮
alert = driver.find_element_by_id("J_AgreementBtn")
alert.click() #填入手机号
phone_input = driver.find_element_by_id("J_Mobile")
phone_input.clear()
phone_input.send_keys("135XXXXXXXX") #移动滑块
source = driver.find_element_by_id("nc_1_n1z")
target = driver.find_element_by_xpath('//span[@data-nc-lang="_startTEXT"]')
action_chains = ActionChains(driver) # 先选中滑块并按住鼠标左键,然后移动滑块
action_chains.click_and_hold(source).perform()
action_chains.move_by_offset(300,0).perform()
time.sleep(2) #注意,以下使用的是css_selector,因为使用id的话,会定位到未启用的按钮上而出错
#在本例中,此按钮未启用前的class为"btn btn-large tsl btn-disabled"
next_button = driver.find_element_by_css_selector('[class="btn btn-large tsl"]')
next_button.click()