# -*- 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. obj-c编程03:多个参数方法的定义

    好吧,虽说本猫不能自吹精通十几种语言,但是也见过十几种语言的语法啊.像obj-c这样奇葩,或者说另类的写法还是头一次见到,完整写法我都不知道怎么起方法名了.虽说有简短写法,可和C比起来那个" ...

  2. cocos2d-x 控制台输出日志

    在2dx中用CCLog输出日志,但是在vs的控制台中由于信息很多,很难发现.可以用下面方法,会重新启动一个黑色的控制台来输出日志 修改main.c文件,如下: #include "main. ...

  3. nodejs--(一)http模板篇

    Nodejs http模块可以创建服务器应用实例,也能发送http请求 1.http.get(options[, callback]) 发送简单Get请求,并响应 var http=require(' ...

  4. NIO 多线程

    本文可看成是对Doug Lea Scalable IO in Java一文的翻译. 当前分布式计算 Web Services盛行天下,这些网络服务的底层都离不开对socket的操作.他们都有一个共同的 ...

  5. jvm比较详尽的内存结构

     JVM内存结构 2012-09-17 15:27:59 分类: Java 本文转自:http://www.blogjava.net/nkjava/archive/2012/03/14/371831. ...

  6. 区块链共识机制(POW、POS、DPOS等)的优缺点

    一.POW:工作量证明机制 基本原理: 第一代共识机制,比特币的基础.理解起来,很简单,就是“按劳取酬”,你付出多少工作量,就会获得多少报酬(比特币等加密货币).在网络世界里,这里的劳动就是你为网络提 ...

  7. 【读书笔记】C++Primer---第三章

    1.由于为了与C语言兼容,字符串字面值与标准库string类型不是同一种类型: 2.以下代码中,cin有几点需要注意:a.读取并忽略开头所有的空白字符(如空格.换行符.制表符):b.读取字符直至再次遇 ...

  8. 视频压缩:I帧、P帧、B帧

    /*************************************************************************************************** ...

  9. git如何移除某文件夹的版本控制

    目录结构如下 project bin lib src ...... 执行如下的操作 git add . git commit -m "add bin/ lib/ src/" git ...

  10. SQL Server 表的管理_关于事务的处理的详解(案例代码)

    SQL Server 表的管理_关于事务的处理的详解(案例代码) 一.SQL 事务 1.1SQL 事务 ●事务是在数据库上按照一定的逻辑顺序执行的任务序列,既可以由用户手动执行,也可以由某种数据库程序 ...