# -*- 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匹配元素定位用法大全的更多相关文章

  1. java selenium (五) 元素定位大全

    页面元素定位是自动化中最重要的事情, selenium Webdriver 提供了很多种元素定位的方法.  测试人员应该熟练掌握各种定位方法. 使用最简单,最稳定的定位方法. 阅读目录 自动化测试步骤 ...

  2. selenium元素定位大全

    要做自动化,首先要了解页面结构,要了解页面结构,就要了解页面元素的定位方法 在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合B ...

  3. Selenium基本用法以及元素定位

    一.Selenium 简介 Selenium是ThroughtWorks公司一个强大的开源Web功能测试工具系列,提供一套测试函数,用于支持Web自动化测试.函数非常灵活,能够完成界面元素定位.窗口跳 ...

  4. css伪元素用法大全

    本文主要讲解css伪元素的用法,有需要的朋友可以阅读此文.本文讲解的伪元素有:before,after. 什么是伪元素(Pseudo element)? 伪元素不是真正的元素,不存在与文档之中,所以j ...

  5. offsetParent() 返回第一个匹配元素用于定位的父节点。

    offsetParent() V1.2.6概述 返回第一个匹配元素用于定位的父节点. 这返回父元素中第一个其position设为relative或者absolute的元素.此方法仅对可见元素有效.大理 ...

  6. css选择器用法,使用css定位元素,css和xpath元素定位的区别

    css定位元素 1.什么是css? CSS(Cascading Style Sheets)层叠样式表,是一种语言,用来描述html或者xml的显示样式.在css语言中有css选择器,在selenium ...

  7. 2.7.2 元素定位:frame 内定位 driver.switch_to.frame()

    来源: http://blog.csdn.net/anniejunyan/article/details/23257327  Selenium + Webdriver 学习(五) frame下元素定位 ...

  8. Selenium Webdriver元素定位的八种常用方式

    楼主原创,欢迎学习和交流,码字不容易,转载请注明出处,谢谢. 在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素 ...

  9. Selenium Webdriver元素定位的八种常用方法

    如果你只是想快速实现控件抓取,而不急于了解其原理,可直接看: http://blog.csdn.net/kaka1121/article/details/51878346 如果你想学习web端自动化, ...

随机推荐

  1. ssh keygen命令实现免密码通信(git库获取操作权限:开发人员添加到git库中,获取操作权限)

    先看两个机器实现免密码登陆通讯: 假设 A 为客户机器,B为目标机: 要达到的目的: A机器ssh登录B机器无需输入密码: 加密方式选 rsa|dsa均可以,默认dsa 做法: 1.登录A机器 2.s ...

  2. Linux Framebuffer驱动剖析之一—软件需求

    嵌入式企鹅圈将以本文作为2015年的终结篇,以回应第一篇<Linux字符设备驱动剖析>.嵌入式企鹅圈一直专注于嵌入式Linux和物联网IOT两方面的原创技术分享,稍后会发布嵌入式企鹅圈的2 ...

  3. 64位linux下安装ps模拟器ePSxe

    早就想在爱机上玩ps游戏,特别是彩京的1945一代和非常经典的实况足球2002版.在ubuntu64位下可以通过wine模拟的方式运行windows版的ePSxe,但是总觉得差些呢?非原生啊!网上搜了 ...

  4. DB Query Analyzer 5.03 is distributed, EXCEL table name will be enclosed in square bracket

      DB Query Analyzer 5.03 is distributed, table name will be enclosed in square bracket automatically ...

  5. Redis客户端ServiceStack.Redis的简单使用

    在nuget中下载ServiceStack.Redis,但是运行之后会出现一个问题: Exception: "Com.JinYiWei.Cache.RedisHelper"的类型初 ...

  6. IT轮子系列(四)——使用Jquery+formdata对象 上传 文件

    前言 在MVC 中文件的上传,一般都采用控件: <h2>IT轮子四——文件上传</h2> <div> <input type="file" ...

  7. 2T以上的盘怎么分区, 利用parted创建 linuxTB硬盘GPT分区

    parted创建GPT分区(fdisk不支持创建GPT分区,GPT支持大于2TB分区,MBR不支持) 介绍2种分区表: MBR分区表:(MBR含义:主引导记录) 所支持的最大卷:2T (T; tera ...

  8. 从零开始的H5生活

    作为一个新手,要从头学习Html编程语言,需要从最基础的开始.有耐心慢慢来,很容易就看懂了.我所使用的编程软件是Hbuilder. 1.Html文档结构 包括head和body两部分 <!DOC ...

  9. asp.net图片上传及删除

    方法一:UploadImage cetFU = new UploadImage(); if (cetFU.UpFile(FileUpload1, "teacher_picture" ...

  10. TensorFlow源码安装

    前言 TensorFlow如果能二进制包安装,我真的不想选择自己编译,但是情况不由人,好不容易找到一台服务器,CPU不支持AVX指令集,安装的release版本运行到import tensorflow ...