WebDriver 提供的八种定位方法:

find_element_by_id()

find_element_by_name()

find_element_by_class_name()

find_element_by_tag_name()

find_element_by_link_text()

find_element_by_partial_link_text()

find_element_by_xpath()

find_element_by_css_selector()

WebDriver API

浏览器最大化:
maximize_window() 设置浏览器宽、高:
set_window_size(480, 800) 控制浏览器后退,前进,刷新:
back()
forward()
refresh()

WebElement接口常用方法:

clear 清除元素的内容

send_keys 在元素上模拟按键输入

click 单击元素

submit 提交表单

size 返回元素的尺寸

text 获取元素的文本

get_attribute(name) 获得属性值

is_displayed() 设置该元素是否用户可见

ActionChains 类鼠标操作方法:

在WebDriver中,将关于鼠标操作的方法封装在ActionChains类中来使用:
perform() 执行所有ActionChains中存储的行为
context_click() 右击
double_click() 双击
drag_and_drop() 拖动
move_to_element() 鼠标悬停在一个元素上
click_and_hold() 按下鼠标左键在一个元素上

鼠标右击操作
对于ActionChains类所提供的鼠标方法与前面学过的click()方法的用法有所不同。
鼠标操作步骤:
from selenium.webdriver import ActionChains
导入提供鼠标操作的ActionChains类。
ActionChains(driver)
调用ActionChains()类,将浏览器驱动driver做为参数传入。
context_click(right_click)
context_click()方法用于模拟鼠标右键操作,在调用时需要指定元素定位。
perform()
执行所有ActionChains中存储的行为,可以理解成是对整个操作的提交动作。


drag_and_drop() 拖动


#引入ActionChains类

from selenium.webdriver.common.action_chains import ActionChains ...

#定位元素的原位置

element = driver.find_element_by_name("xxx")

#定位元素要移动到的目标位置

target = driver.find_element_by_name("xxx")

#执行元素的移动操作

ActionChains(driver).drag_and_drop(element,target).perform()

move_to_element() 鼠标悬停(拖动+悬停)

#引入ActionChains类

from selenium.webdriver.common.action_chains

import ActionChains

#-------------------------------

'''鼠标拖动'''

element = driver.find_element_by_name("xxx")  #定位元素的原位置

target = driver.find_element_by_name("xxx") #定位元素要移动到的目标位置

ActionChains(driver).drag_and_drop(element,target).perform()#执行元素的移动操作

#---------------------------

'''鼠标悬停'''

from selenium.webdriver import ActionChains

driver.implicitly_wait(10)  #隐式等待10s
mouse_point=driver.find_element_by_xpath("/html/body/div[6]/div[3]/div[1]/div/div[2]/ul/li[2]/span")  #定位目标点
ActionChains(driver).move_to_element(mouse_point).perform()  #悬浮在这个点上

driver.find_element_by_link_text("陕西论坛").click()  #点击文字
time.sleep(4)  #强制等待4s

Keys 类键盘操作的常用方法:

Keys 类键盘操作的常用方法:
引入Keys类:
from selenium.webdriver.common.keys import Keys
常用方法:
  send_keys(Keys.BACK_SPACE) 删除键(BackSpace)
  send_keys(Keys.SPACE) 空格键(Space)
  send_keys(Keys.TAB) 制表键(Tab)
  send_keys(Keys.ESCAPE) 回退键(Esc)
  send_keys(Keys.ENTER) 回车键(Enter)
  send_keys(Keys.CONTROL,'a') 全选(Ctrl+A)
  send_keys(Keys.CONTROL,'c') 复制(Ctrl+C)
  send_keys(Keys.CONTROL,'x') 剪切(Ctrl+X)
  send_keys(Keys.CONTROL,'v') 粘贴(Ctrl+V)

...

#输入框输入内容

driver.find_element_by_id("kw1").send_keys("seleniumm")

time.sleep(3)

#删除多输入的一个m

driver.find_element_by_id("kw1").send_keys(Keys.BACK_SPACE)

time.sleep(3)

...

打印信息(断言的信息):

  title
  返回当前页面的标题
  current_url
  获取当前加载页面的URL
  text
  获取元素的文本信息

#获得前面title,打印

title = driver.title print title

#获得前面URL,打印

now_url = driver.current_url print now_url

#获得登录成功的用户,打印

now_user=driver.find_element_by_id("spnUid").text

print (now_user)

webdriver提供定位一组对象的方法:

find_elements_by_id()
find_elements_by_name()
find_elements_by_class_name()
find_elements_by_tag_name()
find_elements_by_link_text()
find_elements_by_partial_link_text()
find_elements_by_xpath()
find_elements_by_css_selector()

……

# 选择页面上所有的tag name 为input的元素

inputs = driver.find_elements_by_tag_name('input')

#然后从中过滤出tpye为checkbox的元素,单击勾选

for input in inputs:

  if input.get_attribute('type') == 'checkbox':

  input.click()

……

……

  #选择所有的type为checkbox的元素并单击勾选

checkboxes = driver.find_elements_by_css_selector('input[type=checkbox]')

for checkbox in checkboxes:

  checkbox.click()

……

层级定位:

……
#点击Link1链接(弹出下拉列表)
driver.find_element_by_link_text('Link1').click() #在父亲元件下找到link为Action的子元素
menu = driver.find_element_by_id('dropdown1').find_element_by_link_text('Another action') #鼠标移动到子元素上
ActionChains(driver).move_to_element(menu).perform()
……

WebDriver 控制js弹窗

    在实际系统中,在完成某些操作时会弹出对话框来提示,主要分为"警告消息框","确认消息框","提示消息对话"三种类型的对话框。
1.警告消息框(alert)  警告消息框提供了一个"确定"按钮让用户关闭该消息框,并且该消息框是模式对话框,也就是说用户必须先关闭该消息框然后才能继续进行操作。
2.确认消息框(confirm)
  确认消息框向用户提示一个"是与否"问题,用户可以根据选择"确定"按钮和"取消"按钮。
3.提示消息对话(prompt)  
提示消息框提供了一个文本字段,用户可以在此字段输入一个答案来响应您的提示。该消息框有一个"确定"按钮和一个"取消"按钮。选择"确认"会响应对应的提示信息,选择"取消"会关闭对话框。

      switch_to_alert()    #定位弹出对话

      text                    #获取对话框文本值

      accept()                   #相当于点击"确认"

      dismiss()                 #相当于点击"取消"

      send_keys()               # 输入值,这个alert和confirm没有输入对话框,所以这里就不能用了,所以这里只能使用在prompt这里。

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import timedriver=webdriver.Chrome()
driver.get(“https://www.baidu.com/”)
driver.implicitly_wait(10)#隐式等待10秒mouse=driver.find_element_by_link_text(“设置”)
#鼠标移动到“设置”按钮
ActionChains(driver).move_to_element(mouse).perform()
driver.find_element_by_link_text(“搜索设置”).click() #点击“搜索设置”#强制等待4秒,注意:这里使用隐式等待或显示等待都将无法获取元素
time.sleep(4)#分两步,先定位下拉框,再点击选项
choice = driver.find_element_by_name("NR")
#choice.find_element_by_xpath('//*[@id="nr"]/option[3]').click()Select(choice).select_by_value("50")time.sleep(2)

#使用Select().select_by_index进行定位

案例:利用值定位

#使用Select().select_by_index进行定位#Select(choice).select_by_index(2)
#Select(choice).select_by_value(“50”)
Select(choice).select_by_text ("每页显示50条")

select里面方法除了上面介绍的三种,还有更多的功能如下:

select_by_index()  :通过索引定位

select_by_value()  :通过value值定位

select_by_visible_text() :通过文本值定位

deselect_all()          :取消所有选项

deselect_by_index()     :取消对应index选项

deselect_by_value()      :取消对应value选项

deselect_by_visible_text() :取消对应文本选项

first_selected_option()  :返回第一个选项

all_selected_options()   :返回所有的选项

Python_selenium_WebDriver API,ActionChains鼠标, Keys 类键盘的更多相关文章

  1. ActionsChains类鼠标事件和Keys类键盘事件

    一.鼠标事件 如,移动.点击.释放.单击.右击,拖动等 键盘事件如:输入.回车.粘贴.复制.剪贴等 使用ActionsChains类和Keys类之前都必须先导入       from selenium ...

  2. selenium - webdriver - Keys类(键盘操作)

    Keys()类提供了键盘上几乎所有按键的方法,这个类可用来模拟键盘上的按键,包括各种组合键,如 Ctrl+A, Ctrl+X,Ctrl+C, Ctrl+V 等等 from selenium impor ...

  3. Selenium之ActionChains类、Keys类

    ActionChains类(鼠标操作)常用于模拟鼠标的行为,比如单击.双击.拖拽等行为. 一些常用的模拟鼠标的操作方法有: click(on_element=None)     --- 鼠标单击 do ...

  4. Directx11学习笔记【二十一】 封装键盘鼠标响应类

    原文:Directx11学习笔记[二十一] 封装键盘鼠标响应类 摘要: 本文由zhangbaochong原创,转载请注明出处:http://www.cnblogs.com/zhangbaochong/ ...

  5. python selenium(键盘事件 Keys 类)

    1.导入Keys类 from selenium.webdriver.common.keys import Keys Keys.BACK_SPACE  删除输入框内结尾的单个字符 Keys.SPACE  ...

  6. Selenium3 + Python3自动化测试系列四——鼠标事件和键盘事件

    一.鼠标事件 在 WebDriver 中, 将这些关于鼠标操作的方法封装在 ActionChains 类提供. ActionChains 类提供了鼠标操作的常用方法. ActionChains 类的成 ...

  7. Selenium(十):用By定位元素、鼠标事件、键盘事件

    1. 用By定位元素 除了前面介绍的单位方法,WebDriver还提供了另外一套写法,即统一调用find_element()方法,通过By来声明定位的方法,并且传入对应定位方法的定位参数.具体如下: ...

  8. 【Selenium02篇】python+selenium实现Web自动化:鼠标操作和键盘操作!

    一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第二篇博 ...

  9. python+selenium三:鼠标事件与键盘事件

    1.鼠标事件:# 每个模拟事件后需加.perform() 才会执行# context_click() 右击# double_click() 双击# drag_and_drop(source, targ ...

随机推荐

  1. RHEL8和CentOS8怎么重启网络

      本文主要讲解如何重启RHEL 8或者CentOS 8网络以及如何解决RHEL8和CentOS8系统的网络管理服务报错,当我们安装好RHEL 8或者 CentOS 8,重启启动网络时,会出现以下报错 ...

  2. Linux运维学习第二周记

    1 梨花淡白柳深青, 2 柳絮飞时花满城. 3 惆怅东栏一株雪, 4 人生看得几清明. 老牛望春满地绿! 第二周直接要起飞了! 仍然是最基础最基础的东西,但也是特别多,的别重要! 第二周学记 1.Li ...

  3. 如何将Nginx注册为系统服务,开机自启动。

    亲测有效! 一般程序员在实际工作中,除了敲代码,很少有机会实际接触操作其它东西,例如服务器环境搭建,项目部署等等,不是领导信任或项目组核心成员,应该是没有机会实际接触的,只能通过网上资料稍微了解一下. ...

  4. 设计模式 | 职责链模式(Chain of responsibility)

    定义: 使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系.将这个对象连城一条链,并沿着这条链传递该请求,直到有一个对象处理它为止. 结构:(书中图,侵删) 一个抽象的处理者 若干 ...

  5. CodeForces 1093F Vasya and Array

    题意 给一个长度为 \(n\) 的整数序列 \(a\),其中 \(a_i\) 要么为 \(-1\),要么为 \(1\sim k\) 中的整数. 求出将所有 \(-1\) 替换为 \(1\sim k\) ...

  6. Java学习的第十七天

    1.静态变量 静态方法 静态代码块 2.今天没问题 3.明天学习abstract和综合实例

  7. MYSQL连接时错误码2059解决办法

     一.问题原因: 如上图的报错提示可知,报错原因是caching_sha2_password不能加载. 这是因为8.0之后mysql更改了密码的加密规则,而目前已有的客户端连接软件还不支持Mysql8 ...

  8. Kubernetes K8S之affinity亲和性与反亲和性详解与示例

    Kubernetes K8S之Node节点亲和性与反亲和性以及Pod亲和性与反亲和性详解与示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-mas ...

  9. Python+Selenium(1)- 环境搭建

    一,Selenium 简介 Selenium是目前最流行的web自动化测试工具,也常用于网络爬虫,已经更新到3以上的版本. 1,组件 它提供了以下web自动化测试组件: Selenium IDE,Fi ...

  10. 水题挑战4: luogu P1280 尼克的任务

    题目描述 尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些邮件包含了尼克主管的部门当天要完成的全部任务,每个任务由一个开始时刻与一个持续时间构成. 尼克的一个工作日为 \(n\) 分钟,从 ...