对页面元素进行操作

1.   输入框输入

driver.findElement(By.id("id号")).sendKeys(“输入框输入内容”);

例:

driver.findElement(By.id("stadiumName")).sendKeys("测试场馆");

2.   输入框清除

driver.findElement(By.id("id号")).clear();

例:

driver.findElement(By.id("username")).clear();

3.   超文本链接

driver.findElement(By.linkText(“”)).click();

driver.findElement(By.linkText("已审核")).click();

4.   下拉选择框

首先new一个select对象后对其操作

new Select(driver.findElement(By.name("name"))). selectByVisibleText(“文本内容”);

例:

NewSelect(driver.findElement(By.name("stadium[stadium_source]"))).selectByVisibleText("自营");

new Select(driver.findElement(By.name("name"))). selectByValue(“value值”) ;

例:

new Select(driver.findElement(By.name("stadium[stadium_source]"))). selectByValue("2");

若不选择对应的选项

new Select(driver.findElement(By.id("id号"))). deselectAll();所有都不选

new Select(driver.findElement(By.id("id号"))). deselectByValue( (“value值”) ;

new Select(driver.findElement(By.id("id号"))). deselectByVisibleText (“文本内容”);

5.   选择框

driver.findElement(By.name("name")).click();

driver.findElement(By.name("stadium[is_chain]")).click();

或使用xpth进行定位操作

driver.findElement(By.xpath("(//input[@name='stadium[is_chain]'])[1]")).click();

6.   按钮

driver.findElement(By.id("save")).click();

driver.findElement(By.id("save")).click();

7.   弹层

Alert alert = driver.switchTo().alert();

alert.getText();

alert.accept();     //确定按钮

alert.dismiss();    //取消按钮,二者二选其一

Alert alert=driver.switchTo().alert();

alert.getText();

alert.accept();

//alert.dismiss();

8.   上传图片

driver.findElement(By.id(“id号”)).sendKeys(“路径”);

driver.findElement(By.id("_toUploadFile")).sendKeys("C:\\Users\\Public\\Pictures\\Sample Pictures\\kala.jpg");

driver.findElement(By.id("upload")).click();

9.   导航

打开一个新页面

driver.navigate().to("http://www.baidu.com");

通过历史导航返回原页面:

driver.navigate().forward();

driver.navigate().back();

10. iframe切换

driver.switchTo().defaultContent();

driver.switchTo().frame(“”);

driver.switchTo().frame("uploadIframe");//切换至其他iframe

driver.switchTo().defaultContent();

driver.switchTo().frame("main")//进入main

11. 打印文本

括号中输入变量值

System.out.PrintIn()

//弹层

Alert alert=driver.switchTo().alert();

alert.getText();

System.out.println( alert.getText());//打印出的文件为“确认要审核通过吗?”

12. 设置随机变量

Int 变量值=(int)(Math.随机函数()*范围值);

int x=(int)(Math.random()*100);//定义一个整型x变量,范围在100内

driver.findElement(By.id("stadiumName")).sendKeys("测试"+x);变量名在引号外边

13. 使用cssSelector

通常情况下没有id,name时,通过cssSelector对type进行操作

driver.findElement(By.cssSelector("input[type=\"submit\"]")).click();

 

driver.findElement(By.cssSelector("input.save")).click();

14. 使用xpath

driver.findElement(By.xpath(“(//input[@name=’’])”[value值])).click();

driver.findElement(By.xpath("(//input[@name='is_book'])[2]")).click();

15. 超时等待

当登录系统成功后时间极短,若未设置时间等待,进入iframe进行操作会报错

隐示等待:

Driver.manege().timeouts().implicitlyWait(时间,TimeUnit.时间单位);

driver.manage().timeouts().implicitlyWait(1000, TimeUnit.SECONDS);

显示等待:

new WebDriverWait(driver,15).until(ExpectedConditions,presenceOfElementLocated(By.cssSelector(“等待元素变量名”)))

Thread.sleep(时间);//单位为毫秒

16. Text关键字

知道超链接元素的文本内容(为a元素)

driver.findElement(By.xpath(‘’(//a[contains(text(),’文本内容’)])[value]值’’)).click();

driver.findElement(By.xpath("(//a[contains(text(),'关联商品')])[2]")).click();

总结:

1.最好将不同的模块写为不同的类,需用时调用即可,方便且避免出错,记得引用时要将被引用的类写为static

2.当页面元素有id属性时,最好引用id进行调用,但很多情况下无法查询id时这时再通过xpath或cssSelector进行定位

3.当页面有超文本链接时,考虑使用linkText进行定位

Selenium 基本操作--元素定位的更多相关文章

  1. 【基础】selenium中元素定位的常用方法(三)

    一.Selenium中元素定位共有八种 id name className tagName linkText partialLinkText xpath cssSelector 其中前六种都比较简单, ...

  2. [python爬虫] Selenium常见元素定位方法和操作的学习介绍(转载)

    转载地址:[python爬虫] Selenium常见元素定位方法和操作的学习介绍 一. 定位元素方法 官网地址:http://selenium-python.readthedocs.org/locat ...

  3. selenium界面元素定位

    一.        Selenium界面元素定位 本文元素定位以das2为例 #导入包 from selenium import  webdriver #打开火狐驱动 driver=webdriver ...

  4. python+selenium遇到元素定位不到的问题,顺便记录一下自己这次的错误(报错selenium.common.exceptions.NoSuchElementException)

    今天在写selenium一个发送邮件脚本时,遇到一些没有找到页面元素的错误.经过自己反复调试,找原因百度,终于解决了.简单总结一下吧,原因有以下几点: 一:Frame控件嵌套,.Frame/Ifram ...

  5. Selenium Web元素定位方法

    Selenium是用于Web应用测试的自动化测试框架,可以实现跨浏览器和跨平台的Web自动化测试.Selenium通过使用WebDriver API来控制web浏览器,每个浏览器都都有一个特定的Web ...

  6. 『心善渊』Selenium3.0基础 — 4、Selenium基础元素定位详解

    目录 1.什么是元素定位 2.Selenium元素定位常用API (1)By_id 定位 (2)by_name 定位 (3)by_class_name 定位 (4)by_tag_name 定位 (5) ...

  7. 《手把手教你》系列技巧篇(十四)-java+ selenium自动化测试-元素定位大法之By xpath上卷(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大.  使用这种方法几乎可以定位到页面上的任意元素. ...

  8. 《手把手教你》系列技巧篇(十五)-java+ selenium自动化测试-元素定位大法之By xpath中卷(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大.  使用这种方法几乎可以定位到页面上的任意元素. ...

  9. 《手把手教你》系列技巧篇(十六)-java+ selenium自动化测试-元素定位大法之By xpath下卷(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大.  使用这种方法几乎可以定位到页面上的任意元素. ...

随机推荐

  1. cf747 D. Winter Is Coming

    天呢,这个题2333333,真是被各种卡.完蛋完蛋完蛋.IQ------------: #include<bits/stdc++.h> #define lowbit(x) x&(- ...

  2. BNU Online Judge-34978-汉诺塔

    题目链接 http://www.bnuoj.com/bnuoj/problem_show.php?pid=34978 这题在比赛时AC了不过那时是根据测试数据  抱着来试一下的想法,没想就AC了,其实 ...

  3. LINQ to Sql系列一 增,删,改

    首先,我们来了解一下LINQ to sql 是什么,我想从以下几点来做说明. 1,LINQ是从.net framework 3.0开始引入的的语言特性,主要是用来对集合数据进行操作的.2,LINQ t ...

  4. Beanstalkd使用

    Beanstalkd,一个高性能.轻量级的分布式内存队列系统,最初设计的目的是想通过后台异步执行耗时的任务来降低高容量Web应用系统的页面访问延迟,支持过有9.5 million用户的Facebook ...

  5. node源码详解(七) —— 文件异步io、线程池【互斥锁、条件变量、管道、事件对象】

    本作品采用知识共享署名 4.0 国际许可协议进行许可.转载保留声明头部与原文链接https://luzeshu.com/blog/nodesource7 本博客同步在https://cnodejs.o ...

  6. gulp实时编译less,压缩合并requirejs模块文件

    gulp的使用命令简单,就几个,gulp的简单使用教材可以参考一点的gulp使用教材(http://www.ydcss.com/archives/18). 下面就简单的介绍这些命令如何互相配合的完成前 ...

  7. 通过spring实现javamail发送邮件功能

    以前很早的时候大家都用javamail实现发送邮件的功能,而且我们也一直沿用至今,代码拷过来用用就行了,现在我们改为用spring来实现,这样一来减少代码的复杂度,也能更好的契合spring理念 首先 ...

  8. C++编程练习(4)----“实现简单的栈的链式存储结构“

    如果栈的使用过程中元素数目变化不可预测,有时很小,有时很大,则最好使用链栈:反之,如果它的变化在可控范围内,使用顺序栈会好一些. 简单的栈的链式存储结构代码如下: /*LinkStack.h*/ #i ...

  9. 体验 WebFont,网页上的艺术字

    在最新项目中,由于要频繁使用艺术字, 而用户设备没有此字体,因此以往的经验都是使用图片... 所以在同事的瞩目期许之下,我开始实验研究这个问题的解决方案1. 直接使用字体文件 @font-face { ...

  10. LinkedList底层实现,及其数据结构实现。

    LinkedList底层的实现基于双向表 prev data next next指向下一个node的地址.prev指向上一个node. 这里的代码是LinkedList类的源码. private st ...