iframe,switchToWindow报错--no such element: Unable to locate element
来源:互联网 发布:淘宝送的魔豆 编辑:程序博客网 时间:2024/05/21 10:38
iframe参考
window窗口切换参考
iframe概念:
iframe 就是HTML 中,用于网页嵌套网页的。 一个网页可以嵌套到另一个网页中,可以嵌套很多层
iframe实例
项目相关网址
怎么知道一个页面是否是iframe
1.首先如果我们报找不到这个元素的错误no such element: Unable to locate element,然后使用firefox定位到这个元素下,指定查找的为FirePath查找,如果如上图左下角的两个箭头出现iframe(一般的显示的是TopWindow)标签,那就证明页面包含了iframe,至于iframe旁边的RightMain则代表是iframe的id,当然很多时候不一定有2.如果我们确定包含iframe,那么我们需要操作的元素在iframe中,那么我们就可以先从TopWindow切换到iframe下,之后我们可以对iframe中的元素进行click(),senkeys()等操作,操作完后我们就可以通过代码返回到TopWindow,当然根据实际情况我们可以自由在iframe和TopWindow之间进行自由切换,具体切换代码如下:注意:如果一个页面包含多个iframe,那么切换iframe之前先选择操作的到底是哪个iframe,定位iframe的方法有四个,如下 第一个是根据frame的索引来定位,也就是说一个页面如果有多个frame,可以根据frame(1),frame(2)从上往下去定位。第二个就是我们今天介绍的方法,是根据frame的ID或者name去识别。第三个是根据该frame内部一个元素去识别,第四个就是从frame内部切换到默认的Top Window的方法。我们修改下脚本,在点击化学药这个操作的时候,先切换到frame内部,然后去操作内部元素化学药,最后切换出去,点击无权限提醒对话框上面的去登录按钮。
//点击“计划结束时间”栏目driver.findElement(By.id("plannedEndTime")).click();//从主窗口切换到frame页面,采用索引定位iframedriver.getDriver().switchTo().frame(1);//选择项目"计划结束时间并点击"WebElement webElement3=driver.findElement(By.xpath("html/body/div[1]/div[3]/table/tbody/tr[6]/td[5]")); webElement3.click(); driver.sleep(1000); //从iframe切换到主窗口 driver.getDriver().switchTo().defaultContent();
iframe具体还是参考上述博客
switchToWindow问题实例如下:
在项目中我们会常常遇见如上图所示的情况,当我们点击第一个页面的某个页面时,通常会跳转到另外一个页面,比如登陆之后的跳转,那么我们跳转到另外一个页面的时候,我们一般会操作第二个页面中的元素,比如点击按钮或者输入等,但是此时通常会报错:no such element: Unable to locate element"报错原因:"由于我们是从第一个页面跳转过来的,那么在跳转到第二个页面的时候操作元素,惯性思维是我们操作的是第二个页面的元素,其实我们仍然是在第一个页面,并且操作的是第一个页面,由于很多时候第二个页面的元素通常和第一个元素不尽相同,所以我们查找元素是会报错的"解决方案:":当页面从第一个页面加载到第二个页面后,我们从第一个页面同步切换到第二个页面,这样我们就是操作的是第二个页面元素"Window切换代码如下:"
//"第一个页面元素"driver.findElement(By.partialLinkText("任务流程数据一体化")).click();driver.sleep(2000);// 获取当前页面句柄 String handle = driver.getWindowHandle(); // 获取所有页面的句柄,并循环判断不是当前的句柄 for (String temhandle : driver.getDriver().getWindowHandles()) { if (!temhandle.equals(handle)) driver.getDriver().close(); driver.getDriver().switchTo().window(temhandle); } //点击"新建"按钮--"第二个页面元素"driver.findElement(By.id("Project_addProject")).click();
当然switchToWindow方案还有很多,想知道更多可以自行查看,这里只是提供一些参考
阅读全文
0 0
- iframe,switchToWindow报错--no such element: Unable to locate element
- no such element: Unable to locate element--窗口切换
- org.openqa.selenium.NoSuchElementException: Unable to locate element: 异常解决方法
- NoSuchElementException: Unable to locate element--三种系统等待时间
- IE8报错:Unable to modify the parent container element before the child element is closed
- 解决Selenium弹出新页面无法定位元素问题(Unable to locate element)
- 解决网页元素无法定位(NoSuchElementException: Unable to locate element)的几种方法
- startx报错xinit: No such file or directory (errno 2): unable to connect to X server xinit: No such pr
- ant 报错 Unable to locate tools.jar.
- maven打包报错Unable to locate the JavacCompiler in
- element.getTextContent()报错
- Python中在跳转页面时,在新的页面就不能定位到元素了Unable to locate element
- CentOS中输入yum报错:sudo: unable to execute /bin/yum: No such file or directory
- NS2仿真时报错“can't read "node_(5)": no such element in array”
- mycat启动报Unable to start JVM: No such file or directory (2)
- ant生成文件报错:Unable to locate tools.jar. Expected to find it in ...
- Matlab 视频读取报错“Unable to locate decompressor to decompress video stream”解决办法
- Selenium - How to find the element in iframe
- Java面向对象三大特征之多态
- lasso 详介
- sql 与 hql
- 一、C++ 学生成绩系统
- USTC软件工程项目—2、课题细化确定
- iframe,switchToWindow报错--no such element: Unable to locate element
- 强大的图片加载框架Fresco的使用
- Qt 与python之间的通信(一)
- POJ 2533.Longest Ordered Subsequence
- shell学习手册(1)
- 收敛速率
- bzoj3130 [SDOI2013]费用流 结论+二分答案+网络流检验
- VS的$(TargetUniversalCRTVersion)值不对时如何修改
- ios-ipad横竖屏适配