博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Selenium入门之元素的基本定位以及操作
阅读量:7066 次
发布时间:2019-06-28

本文共 1763 字,大约阅读时间需要 5 分钟。

  hot3.png

1. 元素的定位

Selenium自动化,我们需要做的最基本的事情就是在页面找到元素,并通过脚本程序去操作这个元素,实现模拟人操作。我们有多种定位元素的方式可以选择:

通过元素的ID定位元素:

findElement(By.id(element));

通过元素的名称定位元素:

findElement(By.name(element));

通过元素的html中的位置定位元素:

findElement(By.xpath(element));

通过元素的标签名称定位元素:

findElement(By.tagName(element));

通过元素的链接名称定位元素:

findElement(By.linkText(element));

通过元素的类名定位元素:

findElement(By.className(element));

通过元素的css定位元素:

findElement(By.cssSelector(element));

通过元素的部分链接名称定位元素:

findElement(By.partialLinkText(element));

2. 元素的操作

不同的元素我们进行不同的操作,按钮的点击、输入框的字符输入、或者是元素的内容获取,不同的元素我们操作的方式不一。

对ID为element的元素进行点击操作:

driver.findElement(By.id(element)).click();

对ID为element的元素进行发送字符操作:

driver.findElement(By.id(element)).sendKeys(“XXXXXX”);

这是最简单的两例元素的操作,其实我们还有许多的操作,可以去慢慢的探索脚本的实现方式,比如页面title的获取、浏览器标签的切换等等

attachments-2016-07-bEAn3Sa4577cfa3eb9d3

如图,“关于oppo”元素在一个鼠标悬浮菜单下面,直接定位元素是定位不到的,这里则需要几部操作才能定位到元素, 需要用到Selenium提供的一个强大的用于真实的模拟用户交互的一个类:Actions

 

Actions action = new Actions(driver);

Tools tool=new Tools();

boolean flag=true;

driver.get("http://www.oppo.com/cn/");

//鼠标悬浮在品牌导航标签上面  action.moveToElement(driver.findElement(By.xpath("html/body/header/div[2]/div/div[2]/nav/div/ul/li[3]/a/span[1]"))).perform();

tool.ms(1000);    driver.findElement(By.xpath("html/body/header/div[2]/div/div[2]/nav/div/ul/li[3]/ul/li[1]/a")).click();

tool.ms(1000);

代码中的tool.ms(1000);其实是就是使用Thread.sleep(long millis); 使得当前线程休眠一1m,等待上一步骤响应完成。

attachments-2016-07-o57Buo7V577cfa5783d1

Actions这个类提共了一系列的API供模拟交互:

keyDown : 用于模拟按键被按下

  keyUp : 用于模拟按键松开

  doubleClick : 用于模拟双击

  clickAndHold : 用于模拟鼠标左键点住不放开

  release : 用于模拟松开鼠标,与clickAndHold相配合

  moveToElement : 将鼠标移动至元素的中间位置

  contextClick : 模拟鼠标右键点击

  dragAndDrop : 拖拽

3. 小结

元素操作的步骤:

步骤一: 确定元素的定位方式(调试更改)

步骤二: By element=(By.xpath(XX/XX));

步骤三: WebElement fdelement= driver.findElement(element);

步骤四: fdelement.click();

转载于:https://my.oschina.net/hibony/blog/712900

你可能感兴趣的文章
PostgreSQL Heap Only Tuple - HOT (降低UPDATE引入的索引写IO放大) ...
查看>>
SpringBoot(十六)_springboot整合JasperReport6.6.0
查看>>
牵扯256万人!国内一AI公司人脸识别数据泄露
查看>>
Spring cloud配置客户端(二)
查看>>
数字对讲系统开发札记(前端linux c 后端 c#)
查看>>
UMind 1.0 发布
查看>>
阿里云POLARDB如何帮助猿辅导打造“孩子喜欢老师好”的网课平台? ...
查看>>
Nginx+kodexplorer(可道云部署纪要)
查看>>
C++构造函数的default和delete
查看>>
如何利用 CSS 动画原理,在页面上表现日蚀现象
查看>>
中美5G合作又遇阻,英特尔和紫光展锐合作终止
查看>>
python基础教程第2版 20 项目1:即时标记
查看>>
linux禁止root用户直接登录sshd并修改默认端口
查看>>
2019年,AI安防行业的10大未知丨中国人工智能安防峰会
查看>>
Guidelines for Function Compute Development - Use Fun Local for Local Running and Debugging
查看>>
Mac神兵利器(四)时间管理工具
查看>>
pycharm Startup Error: Application cannot start in headless mode
查看>>
MySQL的活跃连接数和连接数
查看>>
高可用服务 AHAS 在消息队列 MQ 削峰填谷场景下的应用
查看>>
MPAndroidChart 教程:开始 Getting Started
查看>>