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 代码及注释
# -*- 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()
selenium 使用随笔的更多相关文章
- Java的selenium代码随笔(8)
Selenium截图方法一: Selenium中截图类TakeScreenshout,这个类主要是获取浏览器窗体内的内容,不包括浏览器的菜单和桌面的任务栏区域,我们用百度首页来截图,看看截图效果. F ...
- Java的selenium代码随笔(7)
//判断元素是否存在public boolean IsElementPresent (WebElement webElement, By by) { boolean status = false; t ...
- Java的selenium代码随笔(6)
//获取元素列表public List<WebElement> ListElements(WebElement webElement, By parentBy, By childrenBy ...
- Java的selenium代码随笔(4)
//高亮操作元素public void highlight(WebElement webElement) {JavascriptExecutor javascriptExecutor = (Javas ...
- Java的selenium代码随笔(5)
//以下七种方法主要用于生成年.月.日.小时.分钟和秒的信息,用于生成保存截图的文件目录名和文件名/** 格式化输出日期* * @return 返回字符型日期*/public static Strin ...
- Java的selenium代码随笔(3)
/** 以下方法主要用于切换页面*/public void SetPageSwitch(String pageTitle) {Set<String> allWindowsHandles = ...
- Java的selenium代码随笔(2)
import java.awt.AWTException;import java.awt.Robot;import java.awt.Toolkit;import java.awt.datatrans ...
- Java的selenium代码随笔(1)
package ShareClass; import java.awt.AWTException;import java.awt.Robot;import java.awt.Toolkit;impor ...
- Selenium 使用过程遇到问题随笔
最近正在学习Selenium,自学是比较难的,也很感谢网络环境中,各位大大的博文帮助. 也希望在此能够记录一下从小白学习使用selenium测试的过程,也希望能对别人有所帮助. 关于环境部署,以及入门 ...
随机推荐
- 自定义事件解决重复请求BUG
现在,组件化开发还是比较流行的,毕竟其优点相当突出.最近在开发一个组件的时候,遇到了一个很有意思的BUG... BUG的背景 最近在开发一个组件,好不容易开发好了转测试.然后,测试给我提了一个这样的b ...
- 互联网级监控系统必备-时序数据库之Influxdb
时间序列数据库,简称时序数据库,Time Series Database,一个全新的领域,最大的特点就是每个条数据都带有Time列. 时序数据库到底能用到什么业务场景,答案是:监控系统. Baidu一 ...
- C# 实现语音听写
本文系原创,禁止转载. 分享如何使用c#对接科大讯飞语音听写服务,简单高效地实现语音听写. 实现语音听写主要分为录音和语音识别两部分:录音是指获取设备声卡端口的音频数据并将之保存为音频文件,语音识别就 ...
- Android - 电池状态
为了解决电池图标的问题,顺带看了看电池信息的获取方法 :自己写了一个小栗子,来验证一下效果 电池的信息,一般都在BatteryManager里面,信息是用广播发出的.我们更新信息需要一个广播接收器 注 ...
- Jenkins中的一些问题解决(~~不断更新~~)
请使用ctrl+F,查询页面中你需要查找的错误信息(注意空格的输入) 1.错误"error fetching remote repo origin" 本地有多个sshkey,导致构 ...
- (转)FastJson---高性能JSON开发包
场景:javaBean对象转化为json对象! 1 Fastjson介绍 Fastjson是一个Java语言编写的JSON处理器,由阿里巴巴公司开发.1.遵循http://json.org标准,为其官 ...
- (转)mybatis:动态SQL
概述:在mybatis中,动态语句是个非常强大和灵活的功能,并且动态语句可以放在sql的任何地方,利用该功能,我们可以写出非常灵活的代码.在mybatis的动态语句中常常可能会用到以下几个运算和逻辑判 ...
- (转)java.util.Scanner应用详解
java.util.Scanner应用详解 java.util.Scanner是Java5的新特征,主要功能是简化文本扫描.这个类最实用的地方表现在获取控制台输入,其他的功能都很鸡肋,尽管Java ...
- MyBatis 详解(一对一,一对多,多对多)
1.什么是MyBatis? MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且 ...
- 【Mysql】Mysql关键字
ADD ALL ALTER ANALYZE AND AS ASC ASENSITIVE BEFORE BETWEEN BIGINT BINARY BLOB BOTH BY CALL CASCADE C ...