web自动化04-窗口iframealert切换以及鼠标操作
1、窗口切换-driver.switch_to.window(driver.window_handles[-1])-获取当前所有窗口,切换到最新的窗口索引-1
import time from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.maximize_window() # 隐性等待,全局的 driver.implicitly_wait(5) # 百度登录 driver.get("https://baidu.com") # 定位输入框 driver.find_element(By.ID, 'kw').send_keys("豆瓣") driver.find_element(By.ID, 'su').click() driver.find_element(By.XPATH, '//a[@href="http://movie.douban.com/"]').click() print(driver.current_url) print(driver.title) print(driver.window_handles) # 获取当前所有窗口,切换到最新的窗口-1 driver.switch_to.window(driver.window_handles[-1]) print(driver.current_url) print(driver.title) # 强制等待 time.sleep(5) driver.quit()
2、iframe切换-三种切换,一般元素定位法-只能一层层进,一层层出-网页上有遮罩层、二维码扫码登录、管理系统分块时可能出现iframe
- 通过name切换 -driver.switch_to.frame('frame_name')
- 通过索引切换 -driver.switch_to.frame(1)
- 元素定位后切换-建议使用 直接定位,切换, iframe 切换
el = browser.find_element('xpath', '//iframe[@class="myiframe"]') browser.switch_to.frame(el)
- 直接退回主页面--browser.switch_to.default_content()
- 退回上级--browser.switch_to.parent_frame()
- iframe不能直接跳,只能一级一级的进去,然后一级一级的出来
3、alert切换-原生alert只有一个alert,定位后确认-toast弹框
框架生成的msg -- 普通元素定位方式
alert弹框 -原生的 --- 切换到alert,点击确认后,定位元素
alert只有一个,alert后没括号
el_alert = browser.switch_to.alert
el_alert.accept()
toast弹框-定位方式:F12-元素出现后-source下点击暂停按钮
4、鼠标操作
- 前提 el = driver.find_element(By.ID, 'su')
- 包 from selenium.webdriver import ActionChains
- 单击 ActionChains(driver).click(el).perform()
- 双击 ActionChains(driver).double_click(el).perform()
- 右击 ActionChains(driver).context_click(el).perform()
- 悬停 ActionChains(driver).move_to_element(el).perform()
- 拖动 ActionChains(driver).drag_and_drop(el1, el2).perform()

浙公网安备 33010602011771号