driver匹配元素定位用法大全
# -*- coding:utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains # 引入ActionChains鼠标操作类
# create capabilities
capabilities = DesiredCapabilities.INTERNETEXPLORER
# delete platform and version keys
capabilities.pop("platform", None)
capabilities.pop("version", None)
# start an instance of IE
# 本身不支持XPath的大多数版本,写xpath时,尽量从一个具有id的元素开始,这样也可以大大提高执行速度
driver = webdriver.Ie(executable_path=r"C:\Program Files\Internet Explorer\IEDriverServer_x64_3.6.0\IEDriverServer.exe", capabilities=capabilities)
#----------------------------------------------------------------
# 设置窗口最大化
driver.maximize_window()
#----------------------------------------------------------------
#导航
# “navigate().to()” 和 “get()” 的效果是一样的。一个只是很多比其他更容易输入!
driver.get("http://www.abchina.com/cn/")
#----------------------------------------------------------------
#<div id="coolestWidgetEvah">...</div>
#匹配id的两种方法
driver.find_element_by_id("coolestWidgetEvah")
driver.find_element(by=By.ID, value="coolestWidgetEvah")
#----------------------------------------------------------------
# <div class="cheese">
# <span>Gouda</span>
# </div>
#匹配class的两种方法
cheeses = driver.find_elements_by_class_name("cheese")
driver.find_elements(By.CLASS_NAME, "cheese")
#----------------------------------------------------------------
# <iframe src="..."></iframe>
#匹配标签元素的两种方法
frame = driver.find_element_by_tag_name("iframe")
driver.find_element(By.TAG_NAME, "iframe")
#----------------------------------------------------------------
# <input name="cheese" type="text"/>
#匹配name的两种方法
driver.find_element_by_name("cheese")
driver.find_element(By.NAME, "cheese")
#----------------------------------------------------------------
#通过链接文本找到元素匹配的两种方法
# < a href = "http://www.google.com/search?q=cheese" > cheese < / a >
cheese = driver.find_element_by_link_text("cheese")
driver.find_element(By.LINK_TEXT, "cheese")
#----------------------------------------------------------------
# 通过查找部分链接文件匹配元素的两种方法
# <a href="http://www.google.com/search?q=cheese">search for cheese</a>
driver.find_element_by_partial_link_text("cheese")
driver.find_element(By.PARTIAL_LINK_TEXT, "cheese")
#----------------------------------------------------------------
# 通过CSS的定位
# <div id="food">
#
# <span class="dairy">milk</span>
#
# <span class="dairy aged">cheese</span>
#
# </div>
driver.find_element_by_css_selector("#food span.dairy.aged")
driver.find_element(By.CSS_SELECTOR, "#food span.dairy.aged")
#----------------------------------------------------------------
#xpath匹配,标签和属性名称小写
# <input type="text" name="example" />
# <INPUT type="text" name="other" />
driver.find_elements_by_xpath("//input")
driver.find_elements(By.XPATH, "//input")
#----------------------------------------------------------------
#用户输入--填写表单
select = driver.find_element_by_tag_name("select")
allOptions = select.find_elements_by_tag_name("option")
for option in allOptions:
print "Value is: " + option.get_attribute("value")
option.click()
from selenium.webdriver.support.ui import Select
select = Select(driver.find_element_by_tag_name("select"))
select.deselect_all()
select.select_by_visible_text("Edam")
#----------------------------------------------------------------
#提交,点击操作
driver.find_element_by_id("submit").click()
driver.find_element_by_xpath('//*[@id="btn_query"]').submit()
driver.find_element_by_id('btn_query').send_keys(Keys.ENTER)
driver.execute_script("var login=document.getElementById('btn_query');login.click();")
element=driver.find_element_by_xpath(menu)
driver.execute_script("arguments[0].click();", element)
#----------------------------------------------------------------
#模拟划过操作
article=driver.find_element_by_xpath('//*[@class="spanone1"]//img')
ActionChains(driver).move_to_element(article).perform() # 将鼠标移动到这里
ActionChains(driver).context_click(article).perform()
#----------------------------------------------------------------
# 移动Windows和框架(Frames)
# <a href="somewhere.html" target="windowName">Click here to open a new window</a>
#移动到定向窗口
driver.switch_to_window("windowName")
driver.switch_to.window("windowName")
# 通过“window handle”的“switchTo().window()”方法。遍历所有打开的窗口
for handle in driver.window_handles:
driver.switch_to_window(handle)
driver.switch_to.window(handle)
#获得当前窗口句柄
nowhandle=driver.current_window_handle
#返回的所有窗口的句柄到当前会话
allhandles=driver.window_handles
print driver.current_window_handle
print driver.window_handles
for handle in allhandles:
if handle != nowhandle:
# 用于处理多窗口之前切换,
driver.switch_to_window(handle)
#----------------------------------------------------------------
# 从frames到frames(或到iframe中)
# switch_to_frame(),用于处理多框架的切换
driver.switch_to_frame("frameName")
#跳出iframe
driver.switch_to_default_content()
#进入iframe标签
driver.switch_to.frame("contentFrame")
# 跳出frame, 进入default content;
driver.switch_to.default_content()
#----------------------------------------------------------------
#弹出对话框
driver.switch_to_alert()
driver.switch_to.alert()
#----------------------------------------------------------------
#前进后退功能
driver.forward()
driver.back()
#----------------------------------------------------------------
# Cookies
# #转到正确的域
driver.get("http://www.example.com")
# #现在在这里的整个域设置的cookie,
# #这里的cookie的名称是'key',它的值是'value'的
driver.add_cookie({'name': 'key', 'value': 'value', 'path': '/'})
# additional keys that can be passed in are:
# 'domain' -> String,
# 'secure' -> Boolean,
# 'expiry' -> Milliseconds since the Epoch it should expire.
# 现在的输出当前URL的所有可用的cookies
for cookie in driver.get_cookies():
print "%s -> %s" % (cookie['name'], cookie['value'])
# You can delete cookies in 2 ways
# By name
driver.delete_cookie("CookieName")
# Or
driver.delete_all_cookies()
#----------------------------------------------------------------
# 使用执行拖放动作类。本地事件事件需要被激活
from selenium.webdriver.common.action_chains import ActionChains
element = driver.find_element_by_name("source")
target = driver.find_element_by_name("target")
ActionChains(driver).drag_and_drop(element, target).perform()
#----------------------------------------------------------------
# HtmlUnit的驱动程序
driver = webdriver.Remote("http://localhost:4444/wd/hub", webdriver.DesiredCapabilities.HTMLUNIT)
#----------------------------------------------------------------
# 启用JavaScript
driver = webdriver.Remote("http://localhost:4444/wd/hub", webdriver.DesiredCapabilities.HTMLUNITWITHJS)
#----------------------------------------------------------------
# Firefox Driver
driver = webdriver.Firefox()
#修改火狐简介
profile = webdriver.FirefoxProfile()
profile.native_events_enabled = True
driver = webdriver.Firefox(profile)
driver匹配元素定位用法大全的更多相关文章
- java selenium (五) 元素定位大全
页面元素定位是自动化中最重要的事情, selenium Webdriver 提供了很多种元素定位的方法. 测试人员应该熟练掌握各种定位方法. 使用最简单,最稳定的定位方法. 阅读目录 自动化测试步骤 ...
- selenium元素定位大全
要做自动化,首先要了解页面结构,要了解页面结构,就要了解页面元素的定位方法 在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合B ...
- Selenium基本用法以及元素定位
一.Selenium 简介 Selenium是ThroughtWorks公司一个强大的开源Web功能测试工具系列,提供一套测试函数,用于支持Web自动化测试.函数非常灵活,能够完成界面元素定位.窗口跳 ...
- css伪元素用法大全
本文主要讲解css伪元素的用法,有需要的朋友可以阅读此文.本文讲解的伪元素有:before,after. 什么是伪元素(Pseudo element)? 伪元素不是真正的元素,不存在与文档之中,所以j ...
- offsetParent() 返回第一个匹配元素用于定位的父节点。
offsetParent() V1.2.6概述 返回第一个匹配元素用于定位的父节点. 这返回父元素中第一个其position设为relative或者absolute的元素.此方法仅对可见元素有效.大理 ...
- css选择器用法,使用css定位元素,css和xpath元素定位的区别
css定位元素 1.什么是css? CSS(Cascading Style Sheets)层叠样式表,是一种语言,用来描述html或者xml的显示样式.在css语言中有css选择器,在selenium ...
- 2.7.2 元素定位:frame 内定位 driver.switch_to.frame()
来源: http://blog.csdn.net/anniejunyan/article/details/23257327 Selenium + Webdriver 学习(五) frame下元素定位 ...
- Selenium Webdriver元素定位的八种常用方式
楼主原创,欢迎学习和交流,码字不容易,转载请注明出处,谢谢. 在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素 ...
- Selenium Webdriver元素定位的八种常用方法
如果你只是想快速实现控件抓取,而不急于了解其原理,可直接看: http://blog.csdn.net/kaka1121/article/details/51878346 如果你想学习web端自动化, ...
随机推荐
- 【Nginx】下载,请求限速,根据URL参数限速
这个场景是限制单个连接的下载速度,还有限制单个IP的连接数,或者单位时间内的请求数,实验环境 nginx1.9.x. 小例子为主,具体的细节请多看文档. 限制下载速度 location /downlo ...
- 面试之路(6)-BAT面试之操作系统内存详解
本文主要参考两篇博客,读后整理出来,以供大家阅读,链接如下: http://blog.jobbole.com/95499/?hmsr=toutiao.io&utm_medium=toutiao ...
- ASP.NET Provider模式应用之SqlMembershipProvider类的剖析
太多了,先给个流程图吧 Provider模式就是GOF中的两种设计模式的应用:策略模式和工厂模式,在程序中使用好这个模型能够解除模块与模块之间的耦合甚至是DIP,同时,不管是ASP.NET MVC还是 ...
- Jbpm工作流(一)
了解一下什么是Jbpm及特点. jBPM,全称是Java Business Process Management,是一种基于J2EE的轻量级工作流管理系统.jBPM是公开源代码项目,它使用要遵循 Ap ...
- JAVA 平台
由Java虚拟机和Java核心类所构成.它为纯Java程序提供了统一的编程接口,而不管下层操作系统是什么. 目录 1Java术语 2移动平台 3桌面应用平台 4企业级平台 5JRE的成分 1J ...
- [转]web服务器压力测试工具
http_load学习心得: 测试网站每秒所能承受的平均访问量(吞吐量) http_load -parallel 5 -fetches 1000 urls.txt这段命令行是同时使用5个进程,随机访问 ...
- JavaScript中对象数组 作业
var BaiduUsers = [], WechatUsers = []; var User = function(id, name, phone, gender, age, salary) { t ...
- 视频客观质量评价工具:MSU Video Quality Measurement Tool【ssim,psnr】
MSU Video Quality Measurement Tool(msu vqmt)是莫斯科国立大学(Moscow State University)的Graphics and Media Lab ...
- 自定义ListView android
定义一个实体类,作为ListView的适配器的适配类型.其中name为水果名称.imageId为水果的图片(图片资源可以随便弄几个占用) public class Fruit { private St ...
- 用js来实现那些数据结构16(图02-图的遍历)
上一篇文章我们简单介绍了一下什么是图,以及用JS来实现一个可以添加顶点和边的图.按照惯例,任何数据结构都不可或缺的一个point就是遍历.也就是获取到数据结构中的所有元素.那么图当然也不例外.这篇文章 ...