Frame标签框架区别
- Frameset:可以直接按照正常元素定位
- Frame:需要把驱动切换到Frame内再进行操作
- IFrame:需要把驱动切换到Frame内再进行操作
切换总结
frame切换原理总结:
-
针对同一层级的frame,如果要进行切换的话,需要切回到默认的首页,不能同级子页之间切换
-
针对所要进入的frame,有多少个层级,就需要切换几次
-
不管当前在哪个层级,如果要回到默认首页,只需要调用一次回到默认首页的方法 driver.switch_to.default_content()
frame切换原理方法:文章来源:https://www.toymoban.com/news/detail-512791.html
driver.switch_to.frame(reference)
driver.switch_to.parent_frame() # 切换到上一级frame
driver.switch_to.default_content() # 切换到默认frame
文章来源地址https://www.toymoban.com/news/detail-512791.html
selenium定位当前处于那个iframe(frame)中
#获取当前iframe的tag name,确定有几个iframe,你所在的元素和获取到页面的iframe之间的关系,来进行iframe的切换。
for child_frame in driver.find_elements_by_tag_name("iframe"):
child_frame_id = child_frame.get_attribute("src")
print(child_frame_id)
frame封装
def list_frame(self, locator):
for child_frame in self.driver.find_elements(*locator):
child_frame_id = child_frame.get_attribute("src")
print(child_frame_id)
# 切换到主frame
def switch_body(self, locator, doc=''):
logger.info('{0},body_frame切换到'.format(doc, locator))
try:
self.driver.switch_to.parent_frame()
except:
logger.info('{0},body_frame切换到失败!!!'.format(doc, locator))
raise
# 切换到不同的frame
def switch_iframe(self, locator, doc=''):
logger.info('{0},frame切换到'.format(doc, locator))
try:
to_frame = self.get_element(locator)
self.driver.switch_to.frame(to_frame)
except:
logger.info('{0},frame切换到失败!!!'.format(doc, locator))
raise
#根据实际需求进行切换
# 切换到不同的frame
def switch_iframe(self, locator='', doc='', relation="child"):
logger.info('{0},frame切换到'.format(doc, locator))
try:
if relation == "parent":
self.driver.switch_to.default_content()
else:
to_frame = self.get_element(locator)
self.driver.switch_to.frame(to_frame)
except:
logger.info('{0},frame切换到失败!!!'.format(doc, locator))
raise
到了这里,关于selenium切换frame的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!