页面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种
:
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定位到