from selenium import webdriver
import time

from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait

"""
browser.switch_to.frame(frame_reference)-->切换到指定frame的方法 
frame_reference:可以为frame框架的name、id或者定位到的frame元素
browser.switch_to.default_content()-->恢复默认页面方法 
"""

"""
页面嵌套
假设一个页面有别的两个页面嵌套进来了(类似于在饿了吗里面嵌套个高德地图不是独立div而是直接嵌套)
我们没有办法确定是操作的主页面还是别的页面
"""

browser = webdriver.Chrome()
# 打开测试网站
browser.get(
    'file:///C:/Users/%E9%BE%99%E7%A5%9E/Desktop/ui%E6%B5%8B%E8%AF%95%E8%B0%B7%E6%AD%8C%E5%8C%85/pagetest/%E6%B3%A8%E5%86%8C%E5%AE%9E%E4%BE%8B.html')
time.sleep(2)

browser.implicitly_wait(10)  # 全部隐式等待10秒


# 针对主页的用户名输入admin
browser.find_element(By.ID, 'userA').send_keys("admin")
time.sleep(2)

# 我们这里的操作从主页访问了进入了用户a
# 针对注册用户a输入用户名adminA
browser.switch_to.frame(browser.find_element(By.ID, 'idframe1'))
browser.find_element(By.ID, "AuserA").send_keys('adminA')
time.sleep(2)

# 因为我们还在用户a的页面  要想操作用户b只能先回到主页面
# 回到默认首页面
browser.switch_to.default_content()

# 针对注册用户b输入用户名adminB
ele_frame=browser.find_element(By.ID, 'idframe2')
browser.switch_to.frame(ele_frame)
browser.find_element(By.ID, "BuserA").send_keys('adminB')
time.sleep(2)
browser.quit()

 

 

这个逻辑不清楚的请看下图

UI自动化 窗口操作_嵌套