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()

 

posted @ 2022-03-21 00:28  依羽杉  阅读(138)  评论(0)    收藏  举报