web自动化-- 处理frame/alert窗口+下拉选择框

53 阅读2分钟

页面frame框架,如何切换框架:

driver.switch_to.frame("框架name或id")     #进入框架\
driver.switch_to.default_content()     #出框架\

同一个页面存在多个frame时,当定位元素不在同一个frame框架中,需要先进入一个框架定位其中元素,再出该框架;再进入其他frame框架,以此类推,遵循有进有出原则,否则可能出现元素定位不到情况。

假设frame节点没有id和name属性怎么办?

方式1.可以让前端开发加属性;
方式2.先通过别的属性定位到该frame节点对象,然后切换到该对象
obj_frame = dr.find_element_by_id('login_frame')#没有id属性,根据实际情况换成别的属性定位方式就可以了
dr.switch_to.frame(obj_frame)

页面搜索查询时,如何处理下拉选择框:

sel = select(driver.find_element(By.NAME, "下拉框控件name"))
#定位select控件选项
sel.select_by_index(1)       #通过下标选中,下标从0开始
sel.select_by_value("10")     #通过value值选中
sel.select_by_visible_text("文本")       #通过文本选中

alert相关窗口,如何处理:

F12或右键选择“检查,如果能看到“检查”菜单,说明是自定义弹窗,没有“检查”菜单就是alert窗口。
alert相关窗口有以下3种

b0285e652da7a0369dd3dd8782b6bd3f_v2-712efdbad7c422f26026f8bb362aadb4_r.jpg

1fe9fb62a22de23feee044368fef4e69_v2-deb0f487bf8d5af57f5c2beacf86e724_r.jpg

6ac45ac1e94905ee0d367f846bad2dd2_v2-53cfd52716127a23ae7d53e8f2260fc5_r.jpg

alert相关窗口定位:

alert = driver.switch_to.alert         #切换alert相关窗口
message = alert.text         #获取弹窗提示信息,多用于判断
print(message)             # 打印提示信息
alert.accept()             # 单击“确定”按钮
alert.dismiss()            # 单击“取消”按钮
alert.send_keys("123")     # 向弹窗中的输入框输入123
driver.switch_to.default_content()       # 返回原先的默认窗口,这样可以继续操作原来页面上的其它元素

面试题元素定位不到会如何分析?
1、元素是否加载完成
2、页面是否存在frame或者iframe框架
3、元素是否不可用(disable)、不可读(readonly)、不可见(hidden 或者style="display:none")
4、是否是动态元素(有前提条件)、动态div层、自定义控件(select)是通过ul和li自定义的下拉框无法用select定位到