本文中主要介绍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入门(二)的更多相关文章

  1. python selenium webdriver入门基本操作

    python selenium webdriver入门基本操作 未经作者允许,禁止转载! from selenium import webdriver import time driver=webdr ...

  2. python+selenium—webdriver入门(一)

    一.浏览器最大化 二.设置浏览器分辨率大小 三.打印页面title 四.打印URL 五.控制浏览器前进或后退 #!/usr/bin/env python#-*- coding:utf-8 -*- fr ...

  3. Python+Selenium+webdriver环境搭建(windows)以及相关资源下载链接

    今天记录一下测试小菜鸟alter在测试入门的一点关于python+Selenium+webdriver环境搭建的经历以及资源分享.欢迎交流学习,批评指正. 一.Python的下载与安装 1.pytho ...

  4. Python+Selenium基础入门及实践

    Python+Selenium基础入门及实践 32018.08.29 11:21:52字数 3220阅读 23422 一.Selenium+Python环境搭建及配置 1.1 selenium 介绍 ...

  5. Python Selenium Webdriver常用方法总结

    Python Selenium Webdriver常用方法总结 常用方法函数 加载浏览器驱动: webdriver.Firefox() 打开页面:get() 关闭浏览器:quit() 最大化窗口: m ...

  6. Python+Selenium WebDriver API:浏览器及元素的常用函数及变量整理总结

    由于网页自动化要操作浏览器以及浏览器页面元素,这里笔者就将浏览器及页面元素常用的函数及变量整理总结一下,以供读者在编写网页自动化测试时查阅. from selenium import webdrive ...

  7. windows操作系统python selenium webdriver安装

    这几天想搞一个爬虫,就来学习一下selenium,在网上遇见各种坑,特写一篇博文分享一下selenium webdriver的安装过程. 一.安装selenium包 pip install selen ...

  8. Python + Selenium WebDriver Api 知识回顾

    一直再用 Selenium WebDriver 但是用的都比较零散,也没有做过总结,今天借此机会,整理一下,方便大家使用时查阅 webDriver  的属性 ['CONTEXT_CHROME', 'C ...

  9. python + selenium WebDriver的环境配置

    想试用python语言来学习selenium WebDriver,首先需要搭建一个测试环境,从python安装到浏览器插件配置的详细步骤,总结如下: 一.python环境配置 1.从官网下载最新的一个 ...

随机推荐

  1. Java异常学习总结二

    异常的处理方式 方式一:捕获异常(try-catch-finally) 捕获异常是通过三个关键词来实现的:try-catch-finally.用try来执行一段程序,如果出现异常,系统抛出一个异常,可 ...

  2. docker 学习(九) docker部署静态网站

    一:  dockerfile, 把Dockerfile和myfolder放在一个目录下: FROM httpd:2.4 COPY ./myfolder/ /usr/local/apache2/htdo ...

  3. day37协程与线程套接字通讯

    协程与线程套接字通讯基于多线程实现套接字服务端支持并发,服务端 from socket import * from threading import Thread def comunicate(con ...

  4. java中将表单转换为PDF

    经过网上搜索大概有三种方式:PDF模板数据填充,html代码转换pdf,借用wkhtmltopdf工具 一 .PDF模板数据填充 1.新建word,在word中做出和表单一样的布局的空表单,然后另存为 ...

  5. mysql 5.7 配置

    MySQL安装文件分为两种,一种是msi格式的,一种是zip格式的.如果是msi格式的可以直接点击安装. zip格式是自己解压,解压缩之后其实MySQL,配置完就可以使用了. 1,配置环境变量很简单: ...

  6. laravel表单操作

    $request->all()//获取所有参数if($request->isMethod('GET')){判断是否是GET请求}$res = $request->is('studen ...

  7. leetcode979

    搞不定这种递归计算,可能我的头脑是“线性”的,这种一层一层的,想起来太费劲了,想的头发都没了.以后希望能有AI来写这种程序吧,AI不怕掉头发! class Solution(object): def ...

  8. IOS 发布 升级新版本

    ERROR ITMS-90725: "SDK Version Issue. ERROR ITMS-90725: "SDK Version Issue. This app was b ...

  9. Mac ssh 免密码登录 Mac 或者 Linux

    最近在 Mac上操作另一台 Mac 和 Linux 服务器,每次输密码太麻烦.所以直接设置 ssh 免密码登录,省去输入密码的过程.先在本机执行 ls ~/.ssh 若不存在 id_rsa,id_rs ...

  10. docker报错

    用docker搭建环境时可能会遇到错误:No releases available for package "xxxx" No releases available for pac ...