python+selenium—webdriver入门(二)
本文中主要介绍webdriver常见的对象定位方法;
一、对象定位的目的
二、常见的对象定位方法
一、对象定位的目的:
1、操作对象
2、获得对象的属性,如:对象的class属性、name属性等
3、获得对象的text
4、获取对象的数量
二、常见的对象定位方法:
1、find element方法:
1、id
2、name
3、class name
4、tag name
5、css定位
6、xpath定位
7、link text
8、partial link text
# !/usr/bin/env python
# -*- coding:utf-8 -*-
from selenium import webdriver
import time __author__ = "No.1 优测" # webdriver 定位元素的八种常用方法 browser = webdriver.Firefox()
url = "http://cn.bing.com/"
browser.get(url)
time.sleep(3) # 1/find element by name
browser.find_element_by_name("q").send_keys("python")
time.sleep(2)
browser.find_element_by_id("sb_form_go").click()
time.sleep(2)
browser.back()
time.sleep(2)
# 2/find element by id
browser.find_element_by_id("sb_form_q").send_keys("python")
time.sleep(2)
browser.find_element_by_id("sb_form_go").click()
time.sleep(2)
browser.back()
time.sleep(2) # 3/find element by class name
browser.find_element_by_class_name("b_searchbox").send_keys("python")
time.sleep(2)
browser.find_element_by_id("sb_form_go").click()
time.sleep(2)
browser.back()
time.sleep(2) # 4/find element by tag name
browser.find_element_by_tag_name("input").send_keys("python")
time.sleep(2)
browser.find_element_by_id("sb_form_go").click()
time.sleep(2)
browser.back()
time.sleep(2) # 5/find element by css
browser.find_element_by_css_selector("input[title=\"输入搜索词\"]").send_keys("python")
time.sleep(2)
browser.find_element_by_id("sb_form_go").click()
time.sleep(2)
browser.back()
time.sleep(2) # 6/find element by xpath
browser.find_element_by_xpath("//input[@id = 'sb_form_q']").send_keys("selennium")
time.sleep(2)
browser.find_element_by_id("sb_form_go").click()
time.sleep(2)
browser.back()
time.sleep(2) # 7/find element by link text
browser.find_element_by_link_text("词典").click()
time.sleep(2)
browser.find_element_by_id("sb_form_go").click()
time.sleep(2)
browser.back()
time.sleep(5) # 8/find element by partial link text
browser.find_element_by_partial_link_text("地").click()
time.sleep(2)
browser.back()
time.sleep(2) browser.find_element_by_id("sb_form_go").click()
time.sleep(2)
browser.find_element_by_id("sb_form_go").click()
time.sleep(2)
browser.back()
time.sleep(2)
browser.quit()
2、find elements方法:
适用情况:1、批量处理元素;2、批量获取页面元素,过滤部分元素进行定位;
准备html文件:
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>Checkbox</title>
<script type="text/javascript" async="" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" />
<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
</head>
<body>
<h3>checkbox</h3>
<div class="well">
<form class="form-horizontal">
<div class="control-group">
<label class="control-label" for="c1">checkbox1</label>
<div class="controls">
<input type="checkbox" id="c1" />
</div>
</div>
<div class="control-group">
<label class="control-label" for="c2">checkbox2</label>
<div class="controls">
<input type="checkbox" id="c2" />
</div>
</div>
<div class="control-group">
<label class="control-label" for="c3">checkbox3</label>
<div class="controls">
<input type="checkbox" id="c3" />
</div>
</div> <div class="control-group">
<label class="control-label" for="r">radio</label>
<div class="controls">
<input type="radio" id="r1" />
</div>
</div> <div class="control-group">
<label class="control-label" for="r">radio</label>
<div class="controls">
<input type="radio" id="r2" />
</div>
</div>
</form>
</div>
</body>
</html>
#!/usr/bin/env python
#-*- coding:utf-8 -*- import selenium
from selenium import webdriver
import time
import os
# 使用绝对路径用normpath方法,使用相对路径用abspath方法
url = "file:///"+os.path.normpath("C:\Users\Administrator\Desktop\checkbox.html")
browser = webdriver.Firefox()
browser.get(url)
checkboxs = browser.find_elements_by_css_selector("input[type = checkbox]")
for checkbox in checkboxs:
checkbox.click()
time.sleep(2)
#取消最后一个按钮选择
browser.find_elements_by_css_selector("input[type = checkbox]").pop().click()
time.sleep(2)
browser.quit()
此文参考http://www.cnblogs.com/fnng/p/3190966.html
python+selenium—webdriver入门(二)的更多相关文章
- python selenium webdriver入门基本操作
python selenium webdriver入门基本操作 未经作者允许,禁止转载! from selenium import webdriver import time driver=webdr ...
- python+selenium—webdriver入门(一)
一.浏览器最大化 二.设置浏览器分辨率大小 三.打印页面title 四.打印URL 五.控制浏览器前进或后退 #!/usr/bin/env python#-*- coding:utf-8 -*- fr ...
- Python+Selenium+webdriver环境搭建(windows)以及相关资源下载链接
今天记录一下测试小菜鸟alter在测试入门的一点关于python+Selenium+webdriver环境搭建的经历以及资源分享.欢迎交流学习,批评指正. 一.Python的下载与安装 1.pytho ...
- Python+Selenium基础入门及实践
Python+Selenium基础入门及实践 32018.08.29 11:21:52字数 3220阅读 23422 一.Selenium+Python环境搭建及配置 1.1 selenium 介绍 ...
- Python Selenium Webdriver常用方法总结
Python Selenium Webdriver常用方法总结 常用方法函数 加载浏览器驱动: webdriver.Firefox() 打开页面:get() 关闭浏览器:quit() 最大化窗口: m ...
- Python+Selenium WebDriver API:浏览器及元素的常用函数及变量整理总结
由于网页自动化要操作浏览器以及浏览器页面元素,这里笔者就将浏览器及页面元素常用的函数及变量整理总结一下,以供读者在编写网页自动化测试时查阅. from selenium import webdrive ...
- windows操作系统python selenium webdriver安装
这几天想搞一个爬虫,就来学习一下selenium,在网上遇见各种坑,特写一篇博文分享一下selenium webdriver的安装过程. 一.安装selenium包 pip install selen ...
- Python + Selenium WebDriver Api 知识回顾
一直再用 Selenium WebDriver 但是用的都比较零散,也没有做过总结,今天借此机会,整理一下,方便大家使用时查阅 webDriver 的属性 ['CONTEXT_CHROME', 'C ...
- python + selenium WebDriver的环境配置
想试用python语言来学习selenium WebDriver,首先需要搭建一个测试环境,从python安装到浏览器插件配置的详细步骤,总结如下: 一.python环境配置 1.从官网下载最新的一个 ...
随机推荐
- 我是一个录像机(NVR)
我是一个网络录像机,简称NVR.我的前辈是DVR,我们的区别很简单,DVR接的是模拟摄像机,我连接的是IP摄像机. 我的前辈DVR比我辛苦,因为模拟摄像机的模拟信号连过来之后,他要进行数字化.编码压缩 ...
- ubuntu安装nginx及其默认目录结构
一. 安装包安装 1.1 安装Nginx $sudo apt-get install nginx Ubuntu安装之后的文件结构大致为: 所有的配置文件都在/etc/nginx下,并且每个虚拟主机已经 ...
- mongodb 安装使用备记
# 1.1 安装 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931B ...
- windwos下基于exp的提权
00x1: 本文是基于windwos 补丁的漏洞提权. 其实是一件很简单的工作:如果看成数据库的3张表分别是: 未打补丁表, 补丁漏洞表, 漏洞利用提权程序表. 为一一对应关系,所以就是资源的掌握,以 ...
- linux git clone 指定分支
git clone -b develop http://192.168.11.11:8888/scm/git/vrmmo 指定下载develop分支
- 面试回顾——List<T>排序
1.如何对List<T>排序: public static void main(String[] args) { Student stu1=new Student("张三&quo ...
- ---mingw Linux交叉编译给Window的工具
https://arrayfire.com/cross-compile-to-windows-from-linux/
- 合批只是对CPU的优化,与GPU没有任何关系
如题. 今天细想了下合批这个东西. 合批是节省了CPU的相关准备工作的工作量. 合批后,经过VS,PS,尝试测试,模板测试后,此时已没有了纹理,顶点,索引的概念,只剩下一个个孤立的像素,各像素间没有任 ...
- JS event loop
一.为什么JavaScript是单线程? JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事.那么,为什么JavaScript不能有多个线程呢?这样能提高效率啊. Java ...
- linux下配置redis4.0.2主从复制以及高可用
一.环境 三台服务器分别为: 172.28.18.75/172.28.18.103/172.28.18.104 在三台服务器上分别部署一个redis节点以及一个sentinel节点 二.主从复制配置 ...