自动化测试selenium(三) 由于iframe 定位不到元素
2017-11-15 11:04
295 查看
iframe原因定位不到元素
现在的项目后台基本都是上左右结构,要出现这个结构效果,需要使用到了iframe标签;
我们先说说iframe在java中使用的方法;
driver.switchTo().parentFrame();//子frame切回到父frame
driver.switchTo().frame();//切入frame中
driver.switchTo().defaultContent();//从frame中切回主文档
想要定位iframe并切进去,可以通过如下代码:
通常采用id和name就能够解决绝大多数问题。但有时候frame并无这两项属性,则可以用index和WebElement来定位:
index从0开始,传入整型参数即判定为用index定位,传入str参数则判定为用id/name定位
WebElement对象,即用find_element系列方法所取得的对象,我们可以用tag_name、xpath等来定位frame对象
举个例子来切入iframe
用xpath定位,传入WebElement对象:
当我们遇到页面有三个iframe,在iframe间切换时,该怎么做呢?
当我切入菜单<iframe src="//iframe[contains(@src,'/gdgs/single_tree/list/eova_menu">这个iframe时,我的实现是这样的
但是现在我想进入update 这个iframe,我先需要回到主页面,使用
再进入update,发现不可以,原因是:我们需要等待,浏览器还没来得及做出反应;
总而言之,在进行iframe切入时,我们最好设置等待,才能正确切入iframe,看到效果,操作我们想要操作的元素。
现在的项目后台基本都是上左右结构,要出现这个结构效果,需要使用到了iframe标签;
我们先说说iframe在java中使用的方法;
driver.switchTo().parentFrame();//子frame切回到父frame
driver.switchTo().frame();//切入frame中
driver.switchTo().defaultContent();//从frame中切回主文档
想要定位iframe并切进去,可以通过如下代码:
driver = webdriver.Firefox(); driver.switch_to.frame(0) # 1.用frame的index来定位,第一个是0 driver.switch_to.frame("frame1") # 2.用id来定位 driver.switch_to.frame("myframe") # 3.用name来定位 driver.switch_to.frame(driver.find_element_by_tag_name("iframe")) # 4.用WebElement对象来定位
通常采用id和name就能够解决绝大多数问题。但有时候frame并无这两项属性,则可以用index和WebElement来定位:
index从0开始,传入整型参数即判定为用index定位,传入str参数则判定为用id/name定位
WebElement对象,即用find_element系列方法所取得的对象,我们可以用tag_name、xpath等来定位frame对象
举个例子来切入iframe
用xpath定位,传入WebElement对象:
driver.switchTo().frame(driver.findElement(By.xpath(("//iframe[contains(@src,'/gdgs/single_tree/list/eova_menu')]"))));
当我们遇到页面有三个iframe,在iframe间切换时,该怎么做呢?
当我切入菜单<iframe src="//iframe[contains(@src,'/gdgs/single_tree/list/eova_menu">这个iframe时,我的实现是这样的
driver.switchTo().frame(driver.findElement(By.xpath(("//iframe[contains(@src,'/gdgs/single_tree/list/eova_menu')]"))));
但是现在我想进入update 这个iframe,我先需要回到主页面,使用
driver.switchTo().defaultContent();
再进入update,发现不可以,原因是:我们需要等待,浏览器还没来得及做出反应;
Thread.sleep(2000);
总而言之,在进行iframe切入时,我们最好设置等待,才能正确切入iframe,看到效果,操作我们想要操作的元素。
相关文章推荐
- selenium元素定位不到--可能是iframe捣的乱
- selenium webdriver 定位元素定位不到 原因之一该元素处于iframe中
- 自动化测试-selenium-定位iframe下元素
- selenium 定位不到元素的原因及解决办法
- Holmos自动化测试入门学习(四)---------------iFrame里面元素的定位
- py+selenium 明明定位不到元素,但却不报错或是报错AttributeError: 'list' object has no attribute 'click'【已解决】
- Selenium自动化测试之学会元素定位
- selenium+webdriver+python定位不到元素的原因及解决办法
- selenium 定位到iframe中的元素
- python+selenium初级(6)—通过切换iframe定位元素
- selenium-java,定位并操作frame和iframe内的元素
- selenium webdriver定位不到元素的五种原因及解决办法(51testing)
- selenium webdriver定位不到元素的五种原因及解决办法
- Selenium多层级的iframe中元素的定位
- Python+selenium定位不到元素的问题及解决方案
- selenium webdriver定位不到元素的五种原因及解决办法
- selenium 页面元素定位之iframe里面的元素定位(包括有无id、name的)
- 为什么selenium定位不到元素
- Selenium2自动化测试-一种低效但有效的web元素定位方法
- selenium webdriver定位不到元素的五种原因及解决办法