一尘不染

Selenium WebDriver在切换之前获取当前帧

selenium

我有一个自定义操作,可以通过切换某些iFrame来查找元素。它使用以下本地操作:
driver.switchTo().frame(requested_frame) 当前,我每次都切换回默认内容,然后再切换到确切的iframe。

现在,我需要通过执行以下计划来提高其性能:

  • 检查当前内容/框架
  • 如果这样,requested_frame=currentFrame则无需切换
  • 如果requested_frame=null然后切换为默认值(如果currentFrame=default再次切换则无需切换)
  • 如果是,requested_frame!=null && requested_frame!=currentFrame则切换为默认设置,然后切换至requested_frame框架。

所以我现在需要的就是获取当前帧。有什么办法可以得到它吗?


阅读 350

收藏
2020-06-26

共1个答案

一尘不染

作为我自己的问题 “ Selenium WebDriver获取当前框架” 的确切答案,我找到了以下解决方法。

JavascriptExecutor jsExecutor = (JavascriptExecutor)driver;
String currentFrame = jsExecutor.executeScript("return self.name");

但是在这里,JavascriptExecutor每次都会执行命令以获取当前帧。因此,如果考虑性能,我想选择#Saurabh
Gaur
的答案作为最佳答案。希望我的回答对其他人有所帮助:-)


以后添加

我只是用当前版本,全局变量和js命令帮助做了一个小测试。

[ 在2个嵌套iframe中,在4个不同元素中执行动作的时间(毫秒)为1000次。 (总共4000个查找元件动作) ]

|          | Switch everytime | Global variable | JS command | 
|----------|------------------|-----------------|------------| 
|          | 2023             | 1950            | 2911       | 
|          | 1902             | 2091            | 2992       | 
|          | 2014             | 1974            | 3020       | 
|          | 1934             | 1931            | 3097       | 
|          | 1997             | 1965            | 3180       | 
|----------|------------------|-----------------|------------|
| Average  | 1974             | 1982.2          | 3040       |

因此,我的“每次切换默认值”的当前性能都还不错:D

2020-06-26