一、单个元素的定位方式:

By.className(className))
By.cssSelector(selector)
By.id(id)
By.linkText(linkText)
By.name(name)
By.partialLinkText(linkText)
By.tagName(name)
By.xpath(xpathExpression)

例子如下:

public static void main(String[] args) {

 WebDriver driver = new FirefoxDriver();
driver.get("http://www.51.com");
WebElement element = driver.findElement(By.className("t_label"));
System.out.println(element.getTagName()); }
//使用ID定位
WebElement element = dr.findElement(By.id("passport_51_user"));
System.out.println(element.getAttribute("title"))

//使用CSS选择器定位
WebElement e1 = dr.findElement(By.cssSelector("#passport_51_user"));
//使用name定位
WebElement e = dr.findElement(By.name("passport_51_user"));

二、多个元素的定位;

1. import java.io.File;
2. import java.util.List;
3.
4. import org.openqa.selenium.By;
5. import org.openqa.selenium.WebDriver;
6. import org.openqa.selenium.WebElement;
7. import org.openqa.selenium.firefox.FirefoxBinary;
8. import org.openqa.selenium.firefox.FirefoxDriver;
9.
10. public class FindElementsStudy {
11.
12. /**
13. *
14. */
15. public static void main(String[] args) {
16. WebDriver driver = new FirefoxDriver();
17. driver.get("http://www.51.com");
18.
19. //定位到所有<input>标签的元素,然后输出他们的id
20. List<WebElement> element = driver.findElements(By.tagName("input"));
21. for (WebElement e : element){
22. System.out.println(e.getAttribute("id"));
23. }
24.
25. driver.quit();
26. }
27. }

 三、iframe的定位

Html 代码
main.html <html>
<head>
<title>FrameTest</title>
</head>
<body>
<div id = "id1">this is a div!</div>
<iframe id = "frame" frameborder="0" scrolling="no"
style="left:0;position:absolute;" src = "frame.html"></iframe>
</body>
</html> frame.html
<html>
<head>
<title>this is a frame!</title>
</head>
<body>
<div id = "div1">this is a div,too!</div>
<label>input:</label>
<input id = "input1"></input>
</body>
</html> Java 代码 import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver; public class FameStudy { public static void main(String[] args) {
  WebDriver dr = new FirefoxDriver();
  String url = "\\Your\\Path\\to\\main.html";
  dr.get(url);
  //在default content 定位id="id1"的div
  dr.findElement(By.id("id1"));
  //此时,没有进入到id="frame"的frame 中时,以下两句会报错
  dr.findElement(By.id("div1"));//报错
  dr.findElement(By.id("input1"));//报错
    //进入id="frame"的frame 中,定位id="div1"的div 和id="input1"的输入框。
    //重点使用下面的.switchTo()方法
  dr.switchTo().frame("frame"); dr.findElement(By.id("div1")); dr.findElement(By.id("input1")); //此时,没有跳出frame,如果定位default content 中的元素也会报错。
  dr.findElement(By.id("id1"));//报错 //跳出frame,进入default content;重新定位id="id1"的div
  dr.switchTo().defaultContent();
  dr.findElement(By.id("id1"));
}
}

 四、alert confirm ,prompt对话框的定位

<html>
<head>
<title>Alert</title>
</head>
<body>
<input id = "alert" value = "alert" type = "button" onclick = "alert('欢迎!请按确认继续!');"/>
<input id = "confirm" value = "confirm" type = "button" onclick = "confirm('确定吗?');"/>
<input id = "prompt" value = "prompt" type = "button" onclick = "var name = prompt('请输入你的名字:','请输入你的名字'); document.write(name) "/>
</body>
</html>
public static void main(String[] args) {

        WebDriver driver = new FirefoxDriver();
String url = "file:///C:/Users/leixiaoj1/Desktop/test.html";
driver.get(url);
//点击第一个按钮,输出对话框上面的文字,然后叉掉
driver.findElement(By.id("alert")).click();
Alert alert = driver.switchTo().alert();
String text = alert.getText();
System.out.println(text);
alert.dismiss();
//点击第二个按钮,输出对话框上面的文字,然后点击确认
driver.findElement(By.id("confirm")).click();
Alert confirm = driver.switchTo().alert();
String text1 = confirm.getText();
System.out.println(text1);
confirm.accept();
//点击第三个按钮,输入你的名字,然后点击确认,最后 driver.findElement(By.id("prompt")).click();
Alert prompt = driver.switchTo().alert();
String text2 = prompt.getText();
System.out.println(text2);
prompt.sendKeys("jarvi");//输入值
prompt.accept();//保存
}

 五、定位下拉框:

public class SelectsStudy {
/**
* @author*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.setProperty("webdriver.firefox.bin","D:\\ProgramFiles\\Mozilla Firefox\\firefox.exe");
WebDriver dr = new FirefoxDriver();
dr.get("http://passport.51.com/reg2.5p");
//通过下拉列表中选项的索引选中第二项,即2011 年
Select selectAge = new
Select(dr.findElement(By.id("User_Age")));
selectAge.selectByIndex(2);
//通过下拉列表中的选项的value 属性选中"上海"这一项
Select selectShen = new
Select(dr.findElement(By.id("User_Shen")));
selectShen.selectByValue("上海");
//通过下拉列表中选项的可见文本选 中"浦东"这一项
Select selectTown = new
Select(dr.findElement(By.id("User_Town")));
selectTown.selectByVisibleText("浦东");
//这里只是想遍历一下下拉列表所有选项,用click 进行选中选项
Select selectCity = new
Select(dr.findElement(By.id("User_City")));
for(WebElement e : selectCity.getOptions())
e.click();
}
}
从上面可以看出,对下拉框进行操作时首先要定位到这个下拉框,new 一个Selcet 对象,然后对它进行操作。

selenium 定位元素的更多相关文章

  1. Web自动化基础(一)使用Selenium定位元素

    什么是元素?我们知道网页上有什么内容显示出来,比如一个按钮,一个输入框,一张图片,都可以理解成元素,这些元素是由html代码构成的,比如图片可以用<img>标签来展示,一个输入框可以用&l ...

  2. selenium 定位元素可以用多个findElement

    selenium 定位元素可以用多个findElement,如driver.findElement(By.id"XXX").findElement(By.linkText(XXX) ...

  3. selenium定位元素(本内容从https://my.oschina.net/flashsword/blog/147334处转载)

    注明:本内容从https://my.oschina.net/flashsword/blog/147334处转载. 在使用selenium webdriver进行元素定位时,通常使用findElemen ...

  4. Python+Selenium+Unittest框架使用——Selenium——定位元素(二)

    1.定位元素(id.name.class.link.partial link) (1)find_element_by_id() 用百度定位测试,用firebug查看定位元素 ,输入框的id为“kw”, ...

  5. Python+Selenium定位元素的方法

    Python+Selenium有以下八种定位元素的方法: 1. find_element_by_id() eg: find_element_by_id("kw") 2. find_ ...

  6. selenium 定位元素方法

    1.通过id定位元素 写法1: element = driver.find_element_by_id("kw") 写法2: from selenium.webdriver.com ...

  7. Python Selenium定位元素常用解决办法

       在做web应用的自动化测试时,定位元素是必不可少的,这个过程经常会碰到定位不到元素的情况(报selenium.common.exceptions.NoSuchElementException), ...

  8. selenium定位元素方法汇总

    #打开网页前三步 from selenium import webdriver driver=webidriver.Chrome() driver.get("https://www.baid ...

  9. python+selenium 定位元素的主要方法

    selenium对web各元素的操作首先就要先定位元素,定位元素的方法主要有以下几种: 通过id定位元素:find_element_by_id("id_vaule") 通过name ...

  10. selenium 定位元素成功, 但是输入失败 (textarea)

    问题描述 UI页面功能测试中, 定位元素并输入(通过sendKey()方法输入), 显示输入失败. 根本原因 为了修复一个bug, 这个元素从input改成了textarea, 而textarea是有 ...

随机推荐

  1. SQL Server数据库性能优化技巧

    查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引: 2.I/O吞吐量小,形成了瓶颈效应: 3.内存不足: 4.网络速度慢: 5.查询出的数据量过大: 6.锁或者死锁: 7.返回了不必 ...

  2. 搭建SpringMVC+Spring+Hibernate平台

    一. 开发环境 1. 点击此查看并下载需要的 Eclipse IDE for Java EE Developers 开发工具,推荐选用32位   2. 点击此查看并下载需要的 MySQL Server ...

  3. Docker中部署Kubernetes

    Kubernetes为Google开源的容器管理框架,提供了Docker容器的夸主机.集群管理.容器部署.高可用.弹性伸缩等一系列功能:Kubernetes的设计目标包括使容器集群任意时刻都处于用户期 ...

  4. web.xml中的welcome-file-list不起作用

    今天尝试使用struts2+ urlrewrite+sitemesh部署项目,结果发现welcome-file-list中定义的欢迎页不起作用: <welcome-file-list> & ...

  5. 并行计算提升32K*32K点(32位浮点数) FFT计算速度(4核八线程E3处理器)

    对32K*32K的随机数矩阵进行FFT变换,数的格式是32位浮点数.将产生的数据存放在堆上,对每一行数据进行N=32K的FFT,记录32K次fft的时间. 比较串行for循环和并行for循环的运行时间 ...

  6. 杂项之图像处理pillow

    杂项之图像处理pillow 本节内容 参考文献 生成验证码源码 一些小例子 1. 参考文献 http://pillow-cn.readthedocs.io/zh_CN/latest/ pillow中文 ...

  7. flex自适应高度内容高度超出容器高度自动出现滚动条的问题

    在容器中设置 flex-grow:2; overflow-y:auto;overflow-x:hidden;容器高度自适应. 内容高度不固定,无法出现滚动条,然后在容器中添加height:0,出现滚动 ...

  8. [LeetCode] Integer to Roman 整数转化成罗马数字

    Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 t ...

  9. 30秒搞定javascript作用域

    引用一下js权威指南的一名话作为开场”JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里.” javascript不存在大括号级的作用域,但他有函数作用域,也就是说变量 ...

  10. Asp.net 设置GridView自适应列宽不变形

    动态绑定的GridView由于列数不固定,而列又太多,这样设置GridView固定宽度就不能满足需求了.为此整理了两种方法来达到GridView自适应列宽不变形的效果. //在GridView的行数据 ...