今天学习了selenium+python的环境搭建
1.selenium相对于QTP的优点,对于现在的我来说,只是因为它开源,支持多平台,支持多浏览器,支持分布式测试。
2.下载了python安装包2.7.11/setuptools/pip,然后依次安装
a. exe档直接默认安装python
b. 配置环境变量
修改我的电脑->属性->高级->环境变量->系统变量中的PATH为:
变量名:PATH
变量值:;C:\Python27
c.setuptools-20.3.1.tar.gz文件,对文件进行解压,找到ez_install.py文件,进入windows命令提示下执行ez_install.py:
C:\setuptools-20.3.1>pythonez_install.py 没有报错表示安装成功.
d. 安装pip ,我默认解压在了C:\pip-8.1.1 目录下
打开命令提示符(开始---cmd回车)进入C:\ pip-8.1.1目录下输入:
C:\pip-1.3.1 > python setup.py install
3. 安装selenium
连网, 直接在C:\Python27\Scripts 下输入命令安装: C:\Python27\Scripts > pip install -U selenium
4.安装chromedriver
将下载的exe文件放在chrome安装目录:C:\\\\\Google\Chrome\Application\ 然后设置path环境变量 设定成安装目录即可。
其他driver方法雷同。
今天第一次看第一个script:
A
#conding=utf-8
from selenium import webdriver
browser=webdriver.Chrome()
browser.find_element_by_id("kw").send_keys("python")
browser.find_element_by_id("su").click()
browser.quit()
重要的一个知识点就是元素的定位问题,这也是自动化测试的核心。这就像你要安排别人做事,首先要找到这个做事的人。 这个人就有很多的唯一属性(特征),如身份证 姓名 等等
这里就要学习webdriver对象定位方法:
id
name
class name
link text
partial link text
tag name
xpath
css selector
举个例子:百度页面的搜索输入框
<input id="kw" class="s_ipt" type="text" maxlength="100" name="wd" autocomplete="off"> 这样看就很清晰了。要定位一个点只需找到他的属性特征,唯一的特性就能准确识别到它。
这里面的type就是tag name
browser.find_element_by_link("新闻").click()
或browser.find_element_by_partial_link_text("新").click() 这个也能定位到“新闻”的链接.
这里要说等等是xpath和CSS定位,
a. CSS定位是很灵活牛x的定位方式,它可以连接页面元素的任意属性,具体我还没完全弄懂
browser.find_element_css_selector("a[name=\"wd"\]").send_keys(Python)/browser.find_element_css_selector("kw").send_keys(Python)等等都可以定位到输入框。
b. XPath定位扩展了id name的定位方式比如定位页面上的第3个复选框
browser.find_element_xpath_("//input[@id='kw']").send_keys(Python)
browser.find_element_xpath_("//tr[@id='kw']/td[2]").click() #id为'kw'的tr,定位它里面的第2个td
到这里我还没弄懂xpath真正的结构,可能需要重新去学习XML,因为这个xpath是一种XML文档中定位元素的语言。
B
添加Delay时间确保脚本运行的稳定性
这里需要引入time函数 import time
time.sleep(3) #休眠3秒 当然也可以用智能等待时间browser.implicitly_wait(10)
C
打印信息去确认脚本运行位置与正确性 中间点
print driver.title #把页面title打印出来
D
浏览器最大化 browser.maxmize_window()
浏览器宽高设定 browser.set_window_size(600,800) #宽600 高800
浏览器前进后退 browser.get(first url) browser.get(second url) 然后browser.back()/browser.forward() 就相继有作用了. 是不是很有意思呀. 哈哈
上面已经讲过元素定位, 接着就是应该操作元素了,对吧!
操作对象常用:
click 点击按钮
send_keys 按键输入
clear 清空
submit 清空或提交
text 获取文本信息 例如:date=driver.find_element_by_id("cp").text print data
今天就学习到这. 明天继续.
这里感谢 虫师, 知识点都是从他那学来的.