UI自动化 Selenium frame框架处理

frame框架处理

  • frame(iframe)标签作⽤--是什么?
  1. 在⻚⾯中加载另⼀个⻚⾯
  • 为什么处理iframe(frane)?
  1. 焦点默认在启动⻚⾯,如果不出处理iframe,⽆法操作iframe嵌⼊的⻚⾯元素。
  • 如何处理

1、切换到iframe driver.switch_to.frame(iframe元素)

2、操作元素

3、回到默认⻚⾯ driver.switch_to.default_content()

alt

# 获取注册A iframe元素
A = driver.find_element(By.CSS_SELECTOR, "#idframe1")
# 1、切换到A
driver.switch_to.frame(A)
# 2、注册A操作
driver.find_element(By.CSS_SELECTOR,"#userA").send_keys("admin")
# 3、回到默认⽬录 注册时例.html
driver.switch_to.default_content()
# 4、获取注册B iframe元素
B = driver.find_element(By.CSS_SELECTOR, "#idframe2")
# 5、切换到B
driver.switch_to.frame(B)
# 6、注册B操作
driver.find_element(By.CSS_SELECTOR,"#userB").send_keys("admin")

切换多窗口

  • 什么是多窗口? alt
  • 为什么要切换? selenium默认启动时,所有的焦点在启动窗⼝,那么意味着⽆法操作其他窗⼝的标签。
  • 切换步骤
  1. 获取窗⼝句柄 driver.window_handles
  2. 使⽤句柄切换窗⼝ driver.switch_to.widnow(handle) 句柄:窗⼝的唯⼀标识符
  • 示例
"""
 需求:
 1、打开注册示例⻚⾯
 2、点击注册A⽹⻚链接
 3、填写注册A⽹⻚内容
"""
print("操作之前所有窗⼝的句柄:", driver.window_handles)
driver.find_element(By.LINK_TEXT, "注册A⽹⻚").click()
handles = driver.window_handles
print("操作之后所有窗⼝的句柄:", handles)
# 重点:切换窗⼝
driver.switch_to.window(handles[1])
# 填写注册A⽹⻚ ⽤户名
driver.find_element(By.CSS_SELECTOR, "#userA").send_keys("admin"
  • 多窗⼝之间切换⼯具封装
def switch_window(title):
 # 1、获取所有窗⼝句柄
 handels = driver.window_handles
 # 2、遍历句柄进⾏切换
 for handel in handels:
 # 操作
 driver.switch_to.window(handel)
 # 获取当前窗⼝title 并且 判断是否⾃⼰需要的窗⼝
 if driver.title == title:
 # 操作代码
 return "已找到{}窗⼝,并且已切换成功".format(title)
title_A = "注册A"
title_B = "注册B"
# 打开注册A和注册B⽹⻚
driver.find_element(By.LINK_TEXT, "注册A⽹⻚").click()
driver.find_element(By.LINK_TEXT, "注册B⽹⻚").click()
# 填写注册A⽹⻚ ⽤户名
switch_window(title_A)
driver.find_element(By.CSS_SELECTOR, "#userA").send_keys("admin")
switch_window(title_B)
driver.find_element(By.CSS_SELECTOR, "#userB").send_keys("admin")

⾯试题:如果定位不到元素怎么办?

alt

全部评论

相关推荐

10-29 15:38
门头沟学院 Java
榕城小榕树:难道你简历里写了配送路径优化算法?
点赞 评论 收藏
分享
点赞 评论 收藏
分享
1 1 评论
分享
牛客网
牛客企业服务