Selenium 特殊元素的定位与操作

Web页面有很多特殊的元素  无法使用基本的元素定位方式定位,下面介绍几个特殊的元素定位

1、alert框

alert框只有一个确认按钮

BrowserUtil.driver.findElement(By.id("abtn")).click();

Thread.sleep(3000);

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

alert.accept(); //点击确认按钮

alert.dismiss();//弹框消失

2、confirm框

confirm框有确定和取消按钮

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

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

alert.dismiss();//点击取消按钮

confirm框和alert框使用方法一样

3、div类型的弹框

4、Iframe切换

如何确认定位的是元素是否存在iframe,例如在chrome浏览器检查元素时,以下2个标识可以确认是iframe

iframe定位思路:

1)先定位到第一个元素

2)使用格式switchTo().frame()方法转到frame再定位

BrowserUtil.driver.switchTo().frame("bframe");

3)多层嵌套继续使用第2)条的方法

4)回到原来的第一个主页面中

BrowserUtil.driver.switchTo().defaultContent();

5、radio/checkbox 单选/复选框 

使用普通定位元素的方法就可以了,用click()方法点击,用isSelected()方法判断是否选中

复选框多选,定位多个元素依次点击就可以了

6、select 选择框

下拉选择框可以单选也可以多选,具体使用如下:

7、时间日期控件

1)时间控件支持输入框输入日期,按正常的元素定位sendKeys输入日期即可

2)时间控件输入不支持输入日期时,查看该元素可发现,该属性有readonly,只可读不可写,例如12306的时间控件

此时需要在Selenium里面执行javaScript代码,把该属性去掉后,再按照正常的元素定位方式,sendKeys输入日期,具体代码如下:
JavascriptExecutor javascriptExecutor = (JavascriptExecutor)BrowserUtil.driver;

javascriptExecutor.executeScript("document.getElementById(‘train_date‘).removeAttribute(‘readonly‘)");

在检查元素console控制台输入document.getElementById(‘train_date‘),可以找到该输入框,removeAttribute(‘readonly‘)表示要移动该属性的readonly值,只时该输入框就可以输入日期了

注意: 因只读控件有默认的时间,需要先清除再输入日期,否则时间会重叠显示

8、JavaScript滚动元素到页面某一区域

代码如下:

JavascriptExecutor javascriptExecutor = (JavascriptExecutor)BrowserUtil.driver;
javascriptExecutor.executeScript("document.getElementById(‘index_ads‘).scrollIntoView()");

scrollIntoView()-->滚动到可视区域的最上方
scrollIntoView(0)-->滚动到可视区域的下方

原文地址:https://www.cnblogs.com/wanshuang/p/12513177.html

时间: 2024-10-09 05:07:27

Selenium 特殊元素的定位与操作的相关文章

selenium 动态元素的定位

对于有些元素每次点击都是动态的  即每次都是不一样的  对于这种元素我们可以采用与他相关的其他静态的元素定位 比如 iframe 这个元素的id是动态的 每次都在变化 第一种就是我们观察下 是整个都是变化的还是部分变化  部分变化我们可以采用不变的部分定位 整个都在变化的 只能利用其它不变的元素 例如  通过xpath来定位  drive.find...xpath("//iframe[starts-with(@x,'y')]")  x是不变的元素属性 y则是属性的内容  这里采用以什么

selenium之元素的定位

   1.id定位:find_element_by_id(self, id_)    通过唯一的id来定位 # coding : uft-8 from selenium import webdriverdriver = webdriver.Firefox()url = "https://baidu.com"driver.get(url)#打印一下title,确认我们打开的对不对print(driver.title)# 选中输入框,输入关键词"杭州天气"driver.

selenium对元素定位和操作方法的封装

前面介绍了selenium对元素的定位方法和操作方法,但是因为这些方法用起来重复的次数比较多,所以我们在下面对他们进行一个封装 # -*- coding:UTF-8 -*- from selenium import webdriver import time class common(object): #新建对象就自动创建浏览器并且最大化窗口 def __init__(self): self.driver=webdriver.Chrome() self.driver.maximize_windo

Selenium Webdriver元素定位的八种常用方式

在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素句柄来定位元素.其中By类的常用定位方式共八种,现分别介绍如下. 1. By.name() 假设我们要测试的页面源码如下: <button id="gbqfba" aria-label="Google Search" name="btnK" class="gbqfba"><

java selenium (五) 元素定位大全

页面元素定位是自动化中最重要的事情, selenium Webdriver 提供了很多种元素定位的方法.  测试人员应该熟练掌握各种定位方法. 使用最简单,最稳定的定位方法. 阅读目录 自动化测试步骤 在自动化测试过程中, 测试程序通常的操作页面元素步骤 1. 找到Web的页面元素,并赋予到一个存储对象中 (WebElement) 2. 对存储页面元素的对象进行操作, 例如:点击链接,在输入框中输入字符等 3. 验证页面上的元素是否符合预期 通过这三个步骤, 我们可以完成一个页面元素的操作, 找

selenium中的webdriver定位元素失败的常见原因

自动化测试中经常会出现无法定位元素的情况,报selenium.common.exceptions.NoSuchElementException错误 Frame/Iframe原因定位不到元素: 这个是最常见的原因,首先要理解下frame的实质,frame中实际上是嵌入了另一个页面,而webdriver每次只能在一个页面识别,因此需要先定位到相应的frame,对那个页面里的元素进行定位. 解决方案: 如果iframe有name或id的话,直接使用switch_to_frame("name值"

Selenium Webdriver元素定位的方式

Selenium Webdriver元素定位的方式 主要就是By类的 1.By.name() ## html代码如下: <button id="gbqfba" aria-label="Google Search" name="btnK" class="gbqfba"><span id="gbqfsa">Google Search</span></button>

Selenium Webdriver元素定位的八种常用方式(转载)

转自:http://www.cnblogs.com/qingchunjun/p/4208159.html 在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素句柄来定位元素.其中By类的常用定位方式共八种,现分别介绍如下. 1. By.name() 假设我们要测试的页面源码如下: <button id="gbqfba" aria-label="Google Search" n

使用Selenium对网页元素进行定位的诸种方法

使用Selenium进行自动化操作,首先要做的就是通过webdriver的get()方法打开一个URL链接. 在打开链接,完成页面加载之后,就可以通过Selenium提供的接口,在页面上进行各种操作了,下面我们来了解一下如何在查找元素. 3.1 查找和定位网页元素 在上一篇的示例中,我们就演示了如何通过find_element_by_id()方法,根据元素的id值来定位页面元素. 除了根据元素的id值来查找元素外,Selenium还提供了很多查找元素的方法: 从上图中可以看到,Selenium提