selenium笔记1

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@author:     https://shop60459643.taobao.com
@contact:    [email protected], https://shop60459643.taobao.com
@others:     DTStudio, All rights reserved-- Created on 2015/11/09
@desc:       讲讲web项目中常用的方法属性
webdriver 提供了八种元素定位方法:
id、name、class name、tag name、link text、partial link text、xpath、css selector
在 Python 语言中对应的定位方法如下:
find_element_by_id()
find_element_by_name()
find_element_by_class_name()
find_element_by_tag_name()
find_element_by_link_text()
find_element_by_partial_link_text()
find_element_by_xpath()
find_element_by_css_selector()
"""
from selenium import webdriver
import os
import sys

path = os.getcwd()
path = ‘file://‘ + path.split(‘test_case‘)[0] + ‘demo_html‘ + os.path.sep + ‘test.html‘

test_html = path.decode(‘gbk‘).encode(‘utf-8‘)
baidu_url = ‘http://www.baidu.com‘

dr = webdriver.Firefox()
dr.implicitly_wait(30)
dr.get(baidu_url)

# 百度搜索框的html
# <input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

# 1.根据id属性定位, id="kw"
dr.find_element_by_id(‘kw‘).clear()
dr.find_element_by_id(‘kw‘).send_keys(‘python‘)

# 2.根据name属性定位, name="wd"
dr.find_element_by_name(‘wd‘).clear()
dr.find_element_by_name(‘wd‘).send_keys(‘python‘)

# 3.根据class属性定位, class="s_ipt"
dr.find_element_by_class_name(‘s_ipt‘).clear()
dr.find_element_by_class_name(‘s_ipt‘).send_keys(‘python‘)

# 4.find_element_by_tag_name(), 搜索框的标签是<input></input>
# TIPS:通常很少使用tagname定位,因为页面上包含的相同标签数太多时,
# 比如_testfile页面,包含了3个input元素,使用find_element_by_tag_name(‘input‘)时,
# driver是无法区分出你到底要对哪个input操作,这里我们使用find_elements_by_tag_name(‘input‘)
# 注意这里find_elements_xxx的用法
dr.get(test_html)
eles = dr.find_elements_by_tag_name(‘input‘)
for e in eles:
    if e.get_attribute(‘id‘) == ‘username‘:
        e.send_keys(u‘这是用户名输入框‘)

# 5.find_element_by_link_text()
# <a onmousedown="return ns_c({‘fm‘:‘behs‘,‘tab‘:‘tj_duty‘})" href="http://www.baidu.com/duty/">使用百度前必读</a>
# 加 u 的作用是把中文字符串转换成unicode 编码
dr.get(baidu_url)
dr.find_element_by_link_text(u‘使用百度前必读‘).click()

# 6.find_element_by_partial_link_text(), partial link text是对link text的补充。
# 只要取文本链接中的一部分即可,下面2行代码定位到的是同一个元素
dr.back()   # 返回上一页
dr.find_element_by_partial_link_text(u‘使用百度‘).click()
dr.back()
dr.find_element_by_partial_link_text(u‘百度前必读‘).click()

# 7.find_element_by_xpath()
dr.back()
# 7.1 使用绝对路径xpath定位
dr.find_element_by_xpath("/html/body/div[3]/div[1]/div/div[1]/div/form/span[1]/input").send_keys(‘0‘)
# 7.2 使用相对路径的xpath定位
# 关于xpath的技巧,建议亲们在后期深入学习时重点研究下。通过常规方法不能定位元素时,使用xpath/css肯定是可行的。
# <input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">
dr.find_element_by_xpath("//input[@id=‘kw‘]").send_keys(‘1‘)
dr.find_element_by_xpath("//input[@name=‘wd‘]").send_keys(‘2‘)
dr.find_element_by_xpath("//input[@class=‘s_ipt‘]").send_keys(‘3‘)
dr.find_element_by_xpath("//*[@class=‘s_ipt‘]").send_keys(‘4‘)

# 8.find_element_by_css_selector()
dr.find_element_by_css_selector(".s_ipt").send_keys(‘5‘)   # .号后面跟的是class属性, class="s_ipt"
dr.find_element_by_css_selector("#kw").send_keys(‘6‘)   # #号后面跟的是id属性, id="kw"

# 这里停留30秒,百度输入框里输入的是0123456
import time
time.sleep(30)

#
print u"搜索按钮的文字是>>>", dr.find_element_by_id(‘su‘).text

dr.get(baidu_url)
news_link = dr.find_element_by_link_text(u"新闻")
print u"新闻链接是>>>", news_link.get_attribute("href")
print u"新闻链接的name属性是>>>", news_link.get_attribute("name")

# 9.退出,有2种方法
dr.quit()   # 关闭【所有窗口】,并退出相关的驱动程序,
# dr.close()    # 关闭【当前窗口】,注意两者的区别

# find_element_by_xxxx 和find_elements_by_xxx的区别:
# find_element_by_xxxx:定位一个元素
# find_elements_by_xxx:定位一组元素,得到的是一个list,要从list取值后再对每个元素做具体操作
时间: 2024-10-13 14:35:36

selenium笔记1的相关文章

Python+Selenium笔记(九):操作警告和弹出框

#之前发的 driver.switch_to_alert() 这句虽然可以运行通过,但是会弹出警告信息(这种写法3.x不建议使用)  改成 driver.switch_to.alert就不会了. (一) 前言 开发人员使用JavaScript 警告或者模态对话框来提示校验错误信息.报警信息.执行操作后的返回信息,甚至用来接收输入值等. (二) Alert类 Selenium WebDriver 通过Alert 类来操控 JavaScript 警告. (三) Alert功能及方法 功能/属性 简单

selenium笔记7

#!/usr/bin/env python # -*- coding: utf-8 -*- """ @desc: 测试126邮箱的登陆功能 1.使用公共方法public.login 2.将测试数据放在xml文件中,使用数据驱动(/test_data/login.xml) 3.这里使用xml.dom.minidom读取xml数据 """ import unittest import xml.dom.minidom import os import

selenium笔记6

#!/usr/bin/env python # -*- coding: utf-8 -*- """ @desc: 将登陆动作封装成function """ import unittest import sys import os from selenium import webdriver from selenium.webdriver.common.keys import Keys # 单独运行这个py文件时,需要加入下面的代码,用以将项目的目

selenium笔记5

#!/usr/bin/env python # -*- coding: utf-8 -*- """ @desc: 登陆126邮箱 """ from selenium import webdriver import unittest class TestLogin(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() self.driver.implicitly

selenium笔记4

#!/usr/bin/env python # -*- coding: utf-8 -*- """ @desc: 使用unittest组织用例 """ from selenium import webdriver import unittest import time class TestSearch(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() se

Selenium笔记(1)

Selenium是一个Web自动化测试工具(也可以当做爬虫工具 它可以模拟N多浏览器行为,而且支持多平台(windows.linux.MAC),多语言(C. java.ruby.python.c#),多浏览器就不说啦. 准备工作:   python2.7 Selenium2.53.5 Chrome浏览器(其实其他的也可以) Selenium的安装通过工具 pip install selenium 即可 想要通过Selenium模拟浏览器行为,我们还需要安装浏览器驱动 参考文章:http://bl

selenium笔记2

1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 """ 4 @desc: 操作浏览器 5 6 """ 7 from selenium import webdriver 8 import time 9 import logging 10 11 logging.basicConfig(level=logging.INFO) 12 13 14 baidu = "http://www.ba

selenium笔记

1)验证文本是否存在: command:verifyTextPresent 2)验证html tag是否存在(测试特定UI元素) command:veriftElementPresent(检查链接.图片.分区等) 3)测试文本和UI元素,检查Xpath或DOM定位器检查特定文本是否出现在页面上的特定位置 command:verifytext 4)identifier 当不能识别为其他定位方式后,默认为identifier定位,第一个使用指定id的页面元素被识别,没有使用指定id元素,将识别第一个

Python+Selenium笔记(二):配置谷歌+IE环境

#有的时候可能要访问外国的网站下载资料或工具,这时可能出现各种问题,例如谷歌人机验证显示不了.网站打不开等,建议使用一个FQ软件 下载免费版的就行了,土豪请随意.下载后直接安装就行了 http://www.softpedia.com/get/Internet/Servers/Proxy-Servers/Lantern.shtml (一)  设置IE (1)   http://docs.seleniumhq.org/download/  下载IEDriverServer.(建议下载32位的,64位