Java中通过Selenium WebDriver定位iframe中的元素

问题:有一些元素,无论是通过id或是xpath等等,怎么都定位不到。

分析:这很可能是因为你要定位的元素被嵌套在了当前页面的一个iframe元素中,Selenium对iframe中的元素有特殊的定位规则,WebDriver不能够直接进行定位。

解决办法:我们要把这个iframe元素找出来,让WebDriver转移到这个iframe元素上,之后再让WebDriver对iframe中的元素进行定位。

因为最近在用Java来做一些东西,所以就顺便说一下Selenium在Java环境下的使用,总共分三步:

第一步、把Selenium的压缩包从官网上下载下来,解压缩后将所有的jar包——

都复制到java project下:

第二步、右键项目->Build Path->Configue Build Path->Libraries->Add JARs->选择lib文件夹下所有的jar包->OK->OK:

第三步、在项目中import和Selenium相关的类库并使用。

下面举个实际应用中的例子,拿360游戏中心的首页举例,尝试定位页面左侧的账号栏并输入用户名:

通过查看页面元素,你会发现它被嵌套在了一个iframe里,要定位这个input标签,代码如下:

运行结果如下,我们成功定位到了这个iframe中的input元素,并输入了用户名:

时间: 2024-10-09 20:52:30

Java中通过Selenium WebDriver定位iframe中的元素的相关文章

Selenium webdriver定位iframe里面元素

在查找元素过程中,直接通过id或者xpath等找不到元素,查看页面源代码发现元素是属于iframe里,例如: <div class="wrap_login"> <iframe class="frame_login" src="https://exaccount.eastmoney.com/home/login?request=%7b%22agentPageUrl%22%3a%22https%3a%2f%2fpassport.eastmon

selenium webdriver在 ie 中无法定位元素和ie文本框字符输入过慢

在跑自动化测试脚本的时候,不同的ie浏览器,有时候无法定位页面中的元素, 关闭ie的保护模式就可以了. 把他们的保护模式都关闭. 字符输入过慢,把64位的IEDriversERVER替换成 32位的

【selenium自动化——定位frame中的对象】

页面上有 A.B 两个 frame,其中 B 在 A 内,那么定位 B 中的内容则需要先到 A,然后再到 B. switch_to_frame 方法可以把当前定位的主体切换到 frame 里 代码示例: from selenium import webdriverimport time...... driver.implicitly_wait(30)#先找到到 ifrome1(id = f1)driver.switch_to_frame("f1")#再找到其下面的 ifrome2(id

webdriver 定位frameset中的frame

最近在写页面的自动化脚本,在定位frameset 中的frame时,定位不到,经不断尝试,终于解决之,甚感欣慰,O(∩_∩)O~ 页面结构如下图: 问题如下:我在登录成功后,为了判断用户名,先从默认状态driver.switch_to_frame("topFrame")下,但是之后再定位左侧菜单栏时,就定位不到元素了,通过查看结构,原来是处在另外一个frame中(leftFrame),但是此时再通过driver.switch_to_frame("leftFrame"

(selenium+python)_UI自动化04_定位iframe框架内元素

什么是iframe? iframe是HTML标签,作用是文档中的文档(即在当前 HTML 文档中嵌入另一个HTML文档),或者浮动的框架(FRAME).iframe元素会创建包含另外一个文档的内联框架(即行内框架). iframe框架内元素定位 selenium中定位iframe内元素,需先切换到iframe框架内,然后再进行元素定位,否则会报错找不到元素. 一.iframe常用切换 driver.switch_to_frame(iframe_element) # 切换至iframe drive

selenium webdriver定位不到元素的五种原因及解决办法

转自http://www.51testing.com/html/87/300987-831171.html 1.动态id定位不到元素for example:        //WebElement xiexin_element = driver.findElement(By.id("_mail_component_82_82"));        WebElement xiexin_element = driver.findElement(By.xpath("//span[c

Selenium WebDriver定位不到元素的原因及解决办法

1.动态id定位不到元素for example:        //WebElement  xiexin_element = driver.findElement(By.id("_mail_component_82_82"));         WebElement xiexin_element = driver.findElement(By.xpath("//span[contains(.,'写  信')]"));        xiexin_element.cl

转载:selenium webdriver定位不到元素的五种原因及解决办法

1.动态id定位不到元素for example:        //WebElement xiexin_element = driver.findElement(By.id("_mail_component_82_82"));        WebElement xiexin_element = driver.findElement(By.xpath("//span[contains(.,'写 信')]"));        xiexin_element.click

在Jmeter中使用Selenium WebDriver完成测试

引子 以下内容选自<小强软件测试疯狂讲义>一书 正文 首先不得不感叹Jmeter的日渐强大,尤其是其插件.之前我们讲解过,Jmeter可以完成性能测试.接口测试,而这次它居然可以依靠WebDriver来完成GUI的功能自动化测试了. 下面我们就以打开我的博客地址首页为例进行讲解,大致的实现步骤如下: 1) 下载JMeterPlugins-WebDriver-1.3.1.zip,解压之后把lib目录下的所有jar文件和lib/ext目录下的JMeterPlugins-WebDriver.jar文