一、操作目的

1.1 自动化测试常用操作

1、定位网页上的元素,并存储到一个变量中;

2、对变量进行操作,比如点击或输入文字;

3、设定页面元素的操作值;

二、定位方法汇总

2.1 findElement(s)

click(self, on_element=None)

click_and_hold(self, on_element=None)

context_click(self, on_element=None)

double_click(self, on_element=None)

drag_and_drop(self, source, target)

drag_and_drop_by_offset(self, source, xoffset, yoffset)

key_down(self, value, element=None)

key_up(self, value, element=None)

move_by_offset(self, xoffset, yoffset)

move_to_element(self, to_element)

move_to_element_with_offset(self, to_element, xoffset, yoffset)

pause(self, seconds)

perform(self)

release(self, on_element=None)

reset_actions(self)

send_keys(self, *keys_to_send)

send_keys_to_element(self, element, *keys_to_send)

2.2、selenium.webdriver.common.by

CLASS_NAME = 'class name'

CSS_SELECTOR = 'css selector'

ID = 'id'

LINK_TEXT = 'link text'

NAME = 'name'

PARTIAL_LINK_TEXT = 'partial link text'

TAG_NAME = 'tag name'

XPATH = 'xpath'

2.3、selenium.webdriver.common.keys

ADD = '\ue025'

ALT = '\ue00a'

ARROW_DOWN = '\ue015'

ARROW_LEFT = '\ue012'

ARROW_RIGHT = '\ue014'

ARROW_UP = '\ue013'

BACKSPACE = '\ue003'

BACK_SPACE = '\ue003'

CANCEL = '\ue001'

CLEAR = '\ue005'

COMMAND = '\ue03d'

CONTROL = '\ue009'

DECIMAL = '\ue028'

DELETE = '\ue017'

DIVIDE = '\ue029'

DOWN = '\ue015'

END = '\ue010'

ENTER = '\ue007'

EQUALS = '\ue019'

ESCAPE = '\ue00c'

F1 = '\ue031'

F10 = '\ue03a'

F11 = '\ue03b'

F12 = '\ue03c'

F2 = '\ue032'

F3 = '\ue033'

F4 = '\ue034'

F5 = '\ue035'

F6 = '\ue036'

F7 = '\ue037'

F8 = '\ue038'

F9 = '\ue039'

HELP = '\ue002'

HOME = '\ue011'

INSERT = '\ue016'

LEFT = '\ue012'

LEFT_ALT = '\ue00a'

LEFT_CONTROL = '\ue009'

LEFT_SHIFT = '\ue008'

META = '\ue03d'

MULTIPLY = '\ue024'

NULL = '\ue000'

NUMPAD0 = '\ue01a'

NUMPAD1 = '\ue01b'

NUMPAD2 = '\ue01c'

NUMPAD3 = '\ue01d'

NUMPAD4 = '\ue01e'

NUMPAD5 = '\ue01f'

NUMPAD6 = '\ue020'

NUMPAD7 = '\ue021'

NUMPAD8 = '\ue022'

NUMPAD9 = '\ue023'

PAGE_DOWN = '\ue00f'

PAGE_UP = '\ue00e'

PAUSE = '\ue00b'

RETURN = '\ue006'

RIGHT = '\ue014'

SEMICOLON = '\ue018'

SEPARATOR = '\ue026'

SHIFT = '\ue008'

SPACE = '\ue00d'

SUBTRACT = '\ue027'

TAB = '\ue004'

UP = '\ue013'

2.4、selenium.webdriver.Chrome

函数

描述

back()

返回

close()

关闭当前窗口

delete_all_cookies()

删除所有 cookies

delete_cookie('name')

按名字删除 cookie

find_element(by='id', value=None)

查找给定标识符的元素

find_element_by_class_name('name')

通过类名来定位元素

find_element_by_css_selector('css_selector')

通过 css 选择器来定位元素

find_element_by_id('id')

通过 id 来定位元素

find_element_by_link_text('link_text')

通过链接内容来定位元素

find_element_by_partial_link_text('link_text')

通过链接部分内容来定位元素

find_element_by_name('name')

通过元素名称来定位元素

find_element_tag_name('name')

通过标签名来定位元素

find_element_by_xpath('xpath')

通过 xpath 来定位元素

find_elements(by='id', value=None)

find_elements_by_class_name('name')

find_elements_by_css_selector('css_selector')

find_elements_by_id('id')

find_elements_by_link_text('text')

find_elements_by_partial_link_text('link_text')

find_elements_by_name('name')

find_elements_by_tag_name('name')

find_elements_by_xpath('xpath')

forward()

向前

fullscreen_window()

全屏

get('url')

访问 url 页面

get_cookie(''name')

通过名称获取 cookie

get_cookies()

获取所有 cookies

get_log('log_type')

获取日志,类型有:browser、driver、client、server

get_screenshot_as_base64(self)

获取图片存为 base64 编码

get_screenshot_as_file('file_name')

获取图片存为文件,需要指定文件名,png 后缀

get_screenshot_as_png()

将图片存为二进制数据

get_window_position(windowHandle='current')

获取当前窗口的 x,y 位置

get_window_rect()

获取 x,y 坐标和当前窗口的宽高

get_window_size(windowHandle='current')

获取当前窗口的宽高

implicitly_wait('time_to_wait)

隐式等待一个元素加载或命令执行完成的时间。

maximize_window()

最大化

minimize_window()

最小化

refresh()

刷新

save_screenshot('findname')

保存屏幕截图

set_page_load_timeout('time_to_wait')

set_script_timeout('time_to_wait')

set_window_position(x, y, windowHandle='current')

set_window_rect(x, y, width, height)

set_window_size(width, height, windowHandle='current')

start_client()

start_session(capabilities, browser_profile=None)

stop_client()

switch_to_active_element()

switch_to_alert()

switch_to_default_content()

switch_to_frame('frame_reference')

切换到指定框架

switch_to_window('window_name')

切换到指定窗口

那么总的来说,查找元素分为以下两类:

1、查到单个元素

find_element_by_id

find_element_by_name

find_element_by_xpath

find_element_by_link_text

find_element_by_partial_link_text

find_element_by_tag_name

find_element_by_class_name

find_element_by_css_selector

2、查找多个元素(返回列表)

find_elements_by_name

find_elements_by_xpath

find_elements_by_link_text

find_elements_by_partial_link_text

find_elements_by_tag_name

find_elements_by_class_name

find_elements_by_css_selector

上面的是公有方法,还有两个私有方法是:

find_element()

find_elements()

# 这两个方法使用的时候,需要提供两个参数

# 一个是 By.xx ,这里的 xx 分别是上面列出的几种定位方法的大写

# 比如 find_element(By.ID, 'su')

# 比如 find_element(By.CSS_SELECTOR, 'h1')

三、编写实际代码测试

3.1 元素定位

// id 定位

WebElement username = driver.findElement(By.id("username"));

// name 定位

WebElement username = driver.findElement(By.name("username"));

// 部分链接文字定位

WebElement link = driver.findElement(By.partialLinkText("sog"));

// 使用标签名定位

WebElement link = driver.findElement(By.tagName("a"));

// 使用 class 名定位

WebElement input = driver.findElement(By.className("tight"));

// 使用xpath定位

WebElement button = driver.findElement(By.xpath("/html/body/div/input[@value='查询']"));

// 上述xpath使用的是绝对路径定位,当页面发生变化时,很容易造成代码失效。

// 所以推荐使用相对路径,比如将上述定位改成:"//input[@value='查询']"

// 如果定位元素是列表时,下标从1开始

// css定位

WebElement button = driver.findElement(By.cssSelector("input#div > input#ok"));

WebElement button = driver.findElement(By.cssSelector("input#div > input + a + img"));

WebElement button = driver.findElement(By.cssSelector("input:nth-child(2)"));

WebElement button = driver.findElement(By.cssSelector("input#div :nth-child(2)"));

WebElement button = driver.findElement(By.cssSelector("a['href' ^= 'http://www.baidu.com']"));

// ^= 匹配开头,$= 匹配结尾 *= 链接含有即匹配中

xpath模糊定位

xpath函数

定位表达式

解释

Starts-with()

//img[starts-with(@alt,'div1')]

查找图片alt属性开始位置包含“div1“关键字的页面元素

Contains()

//img[contains(@alt,'g1')]

查找图片alt属性包含“gl“关键字的页面元素

XPath 轴(Axis)定位:

关键字

含义

实例

解释

parent

选择当前节点的上层节点

//img[@alt='ok']/parent::div

查找alt属性为ok的图片,然后向定位上层div元素

child

ancestor

所有上层节点

descendant

所有下层节点

following

当前节点之后所有节点

following-sibling

后面所有同级节点

preceding

当前节点之前所有节点

preceding-sibling

前面所有同级节点

java 获取页面元素的位置_Selenium Java 页面元素定位2相关推荐

  1. java获取鼠标在屏幕位置的颜色RGB值

    java获取鼠标在屏幕位置的颜色RGB值 import java.awt.AWTException; import java.awt.AWTKeyStroke; import java.awt.Col ...

  2. linux java 获取路径怎么写_linux中java获取路径的实例代码

    linux中java获取路径怎么写? 在Unix/Linux中,路径的分隔采用正斜"/",比如"cd /home/java". 在java的代码开发中 \ 是代 ...

  3. java 获取spring对象数组_解析Java中如何获取Spring中配置的bean

    解析Java中如何获取Spring中配置的bean Java中如何获取Spring中配置的bean?下面是由百分网小编为大家整理的解析Java中如何获取Spring中配置的bean,喜欢的可以收藏一下 ...

  4. java获取机器号_(转)JAVA获得机器码的实现

    http://yangshangchuan.iteye.com/blog/2012401 首先,定义了一个统一的接口,以支持不同操作系统不同实现的透明切换: Java代码  收藏代码 /** *生成机 ...

  5. java获取主机信息大全,网络编程:Java获取网络主机信息

    java.net.InetAddress类表示互联网协议 (IP) 地址. 有两个子类:Inet4Address, Inet6Address 通过 InetAddress可以方便获取一个域名下的IP, ...

  6. linux java 获取路径怎么写_linux中java获取路径怎么写?

    linux中java获取路径怎么写? 在Unix/Linux中,路径的分隔采用正斜"/",比如"cd /home/java". 在java的代码开发中 是代表转 ...

  7. java 获取linux主机名,linux下java获取hostname

    linux下java获取hostname [2021-01-29 19:46:41]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace( ...

  8. selenium点击元素位置_Selenium 八种元素定位方法

    前言: 我们在做WEB自动化时,最根本的就是操作页面上的元素,首先我们要能找到这些元素,然后才能操作这些元素.工具或代码无法像我们测试人员一样用肉眼来分辨页面上的元素.那么我们怎么来定位他们呢? 在学 ...

  9. 给定数组Arr[n],O(n)时间内找出每个元素左侧所有元素中位置最靠近该元素且大于该元素的元素

    http://blog.csdn.net/yysdsyl/article/details/5419149#cpp 题目: 给定数组Arr[n],对于其中的每个元素Arr[i](0=<i<n ...

最新文章

  1. [转]Windows Shell 编程 第十一章 【来源:http://blog.csdn.net/wangqiulin123456/article/details/7987992】...
  2. Shell中的case语句
  3. 效率提升工具Listary
  4. 解决 :IDEA 修改代码后 Local Changes 中没有提示待提交文件,代码自动提交了
  5. 牛客 牛牛做除法II
  6. java中get接口示例_Java即时类| 带示例的get()方法
  7. java基础---对象锁和类锁的区别
  8. 前端ui框架_推荐几个移动端前端UI框架
  9. 建立类成员函数与字符串的对应关系
  10. 20200718每日一句
  11. java 开发电商平台,JAVA项目实战开发电商项目案例(一)前后端项目分离
  12. 画费氏数列螺线的代码
  13. java net php_atitit. web 在线文件管理器最佳实践(1)--- elFinder 的使用流程解决之道 。打开浏览服务器文件夹java .net php...
  14. 车联网也需要“走对路”,用户需求“导航”小度车载OS持续领先
  15. 程序员的8条解bug(甩锅)大招!
  16. 第一章 C语言与内存
  17. 《金蝶ERP-K/3完全使用详解》——6.2 产品预测单
  18. python实现共轭梯度算法
  19. 后端面试之系统设计-短网址(Short URL)服务怎么设计?
  20. 集成XXL-JOB任务调度中心

热门文章

  1. A Class For Executing MSSql Store Procedure
  2. 通信网络基础期末复习-第一章和第二章-概论和端到端的传输协议
  3. excel表格行宽列高怎么设置_excel表格怎么设置行高列宽
  4. brave浏览器_区块链浏览器 Brave 为广告观看者提供 BAT 代币奖励
  5. crontab 半小时_?用猫粮诱惑,7名消防员花半小时救出困在夹墙间的喵星人
  6. 构造全自动计算的CPU
  7. cla作用matlab,共轭亚油酸(CLA)怎么吃?共轭亚油酸副作用
  8. mysql php 入门_第一节 数据库概述_MySQL_php入门教程
  9. AppWidgetServiceImpl: Widget Error: widget.host.callbacks is null
  10. linux root登陆ftp,LINUX服务器下用root登录ftp