我有一个自定义操作,可以通过切换某些iFrame来查找元素。它使用以下本地操作: driver.switchTo().frame(requested_frame) 当前,我每次都切换回默认内容,然后再切换到确切的iframe。
driver.switchTo().frame(requested_frame)
现在,我需要通过执行以下计划来提高其性能:
requested_frame=currentFrame
requested_frame=null
currentFrame=default
requested_frame!=null && requested_frame!=currentFrame
requested_frame
所以我现在需要的就是获取当前帧。有什么办法可以得到它吗?
作为我自己的问题 “ 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