python自动化 - 页面操作
1. 浏览器打开新的窗口时,需要切换到新的窗口上
# 切换浏览器窗口
wins = driver.window_handles
driver.switch_to.window(wins[-1]) # 先获取当前所有窗口,然后通过下标进行切换
2. 定位iframe的 name进行切换,没有name用下标,切换之后只能到iframe的页面上定位元素
driver.switch_to.frame("login_frame_qq")
3. alert 切换
alert = driver.switch_to.alert # 切换至alert上面
print(alert.text) # 获取弹框文本
alert.accept() # 确认弹窗
4. 鼠标悬浮
# 导包 ActionChains
from selenium.webdriver.common.action_chains import ActionChains
# 1) 找到鼠标要操作的元素
ele = driver.find_element(By.XPATH, "//span[@name='tj_settingicon']")
# 2) 实例化ActionChains
ac = ActionChains(driver)
# 3) 调用鼠标行为
ac.move_to_element(ele)
# 4) 调用perform() 来执行鼠标动作
ac.perform()
# 2) 3) 4)种方法写在一起
ActionChains(driver).move_to_element(ele).perform()
5. select 下拉框选择
from selenium.webdriver.support.select import Select
select_element = driver.find_element(By.XPATH, "//select[@id='sid']")
# 将定位到的元素放到 Select()中
s = Select(select_element)
s.select_by_index(2) # 根据下标来选择
s.select_by_value("doc") # 根据value来选择
s.select_by_visible_text("RTF 文件") # 根据文本来选择
6. 键盘操作
from selenium.webdriver.common.keys import Keys
search = driver.find_element(By.XPATH, "//*[@id='kw']")
search.send_keys("腾讯课堂", Keys.ENTER)
7. 网页滚动条操作
tencent_class = driver.find_element(By.XPATH, "//a[@aria-label='百度百科']") # 获取元素
driver.execute_script('aguments[0].scrollIntoview(false)', tencent_class)
# 将滚动条滑至元素位置 scrollIntoview(false) false 将元素显示在底部,true显示在顶部
# 操作js
pha_js = "var a = arguments[0];a.readOnly=false;a.value='2020-04-01';" # 编写js命令
ele = driver.find_element(By.XPATH, "//*[@id='train_date']")
driver.excute_script(pha_js,ele)
8. 上传操作
9. 页面返回、刷新
driver.back() # 页面返回上一页
driver.refresh() # 页面刷新