一个页面对应一个 iframe: 假设业务流程为 iframe1 -> iframe2 -> iframe3 -> iframe2; 能否试下实例化对象 a,b,c 对应不同页面。 当 b(iframe2) -> c(iframe3) 后 我可以继续使用对象名称 b 来执行 b 中的方法,而不用执行 switch_to.frame(iframe2 )
@Faerie1999 小姐姐求助
应该还是要来回切换的,但是可以把切换封装起来,比如 page object a_iframe,可以在 init 的时候便切换进来,这样不用重复写切换的代码
如果通过造构造器切换的话,实例化 iframe1 对象 a 后 再实例化 iframe2 对象 b,然后使用 a 对象的时候还是会出错,除非重新实例化 iframe1 对象。 目前只能这样吗? 有没有更好的方法?
我觉得页面是有前置操作的话是不能省略的,如果某个测试用例你要去 iframe1 验证或者操作的话,就只能实例化 iframe1 了。
对于楼主 3 楼提到的场景,想到一种思路,让 iframe2 对象的任意方法执行的时候,都统一先判断当前 frame 对不对,不对的话走一遍 switch_to.frame(iframe2) ,同理其他 iframe 也可以这么操作。
实际代码编写上,可以在 frame 的类里面重写 find_element 之类的基本大部分操作都会用到的方法,让它在 find 之前先切换,这样可以节省代码量。
因为不是开发,所以还想请教大佬一个问题: 第一种情况:如果用一个静态变量来标识是否是属于本页面 iframe,只在功能方法里面对标识变量判断; 第二种情况:如果用一个静态变量来标识是否是属于本页面 iframe,对 find_elemnt 复写来判断; 第三种情况:手动执行 switch_to.frame 3 中情况消耗的内存、代码简洁程度、和案例代码编写的流畅度综合比较,哪一种情况比较好呢? 目前个人偏好于第一种
hmm,消耗的内存差异应该不太大,而且对于测试代码来说不会 7x24 长时间执行,不大需要考虑内存的问题
至于代码简洁程度和案例编写流畅度,这个有点见仁见智,特别编写流畅度这个比较主观。建议你可以按这个思路分别写个 demo 对比一下?也可以听下团队其他要一起参与写自动化用例同学的意见。