Python +Selenium之(窗口切换操作、弹出对话框处理、获取当前窗口的title跟url)

1、切换窗口

在使用webdriver的时候,经常会遇到在多个窗口之间切换的操作,比如在A窗口操作某个元素,跳转到B窗口,然后又进入C窗口,此时这种情况就需要用到特殊的窗口处理方法

 - [ ] 切换到新窗口里面的操作
循环遍历 deriver.window_handles

如果要在新的窗口查找元素:
driver.switch_to.wondow(handle)的方法切入新窗口
  • 切换到最初的窗口
    需要保存主窗口的handle
  • 关闭窗口用 close

比如: 打开百度,输入周杰伦,点击链接打开新的窗口

from selenium import webdriver
from selenium.webdriver.common.keys import Keys   #导入回车键的包
driver = webdriver.Chrome(r"D:\Users\CT-LA\AppData\Local\Programs\Python\Python36\Scripts\chromedriver.exe")
driver.implicitly_wait(10)
driver.get('https://www.baidu.com/?tn=02003390_7_hao_pg')

file=driver.find_element_by_id('kw')
file.send_keys('周杰伦')
file.send_keys(Keys.ENTER)

#点击周杰伦_百度搜索的链接
ele=driver.find_element_by_xpath('//*[@id="1"]/h3/a').click()
#显示标题栏文本,可以查看显示的当前页面
print(driver.title)

#保存主窗口的handle
mainWindow=driver.current_window_handle
print(driver.window_handles)
for handle in driver.window_handles:
    # 切换到新窗口
    driver.switch_to.window(handle)
    #检查是否是我们需要进入的window
    if '周杰伦_百度搜索' in driver.title:
        print(handle)
        
#如果要切换到主窗口 (在主窗口继续定位主窗口的元素)
driver.switch_to.window(mainWindow)



CDwindow-D7EC90FCB5FCC78B71F796D7DE849C66就是handle
Python +Selenium之(窗口切换操作、弹出对话框处理、获取当前窗口的title跟url)_第1张图片

2、获取当前窗口的title跟url

  • 获取当前窗口的title
driver.title
  • 获取当前窗口的url
driver.current.url
  • 如果是需要截屏
driver.get_screenshot_as_file('文件名.png')

3、selenium弹出对话框处理

弹出对话框一般有三种样式

  • 第一种 arert 类型的
 操作方法:driver.switch_to_alert.accept() 直接点击确定

Python +Selenium之(窗口切换操作、弹出对话框处理、获取当前窗口的title跟url)_第2张图片

  • 第二种confirm

有确定跟取消

操作方法:driver.switch_to.alert.dismiss()

Python +Selenium之(窗口切换操作、弹出对话框处理、获取当前窗口的title跟url)_第3张图片

  • 第三种prompt

prompt是有输入框的

比如输入clear
driver.switch_to.alert.send_keys('clear)   #在弹出框中输入内容
driver.switch_to.alert.accept()

Python +Selenium之(窗口切换操作、弹出对话框处理、获取当前窗口的title跟url)_第4张图片

  • [ ]还有一种,获取弹出框文本的值
driver.switch_to.alert.text

(下图是弹出框的元素定位不到使用 text方法)
Python +Selenium之(窗口切换操作、弹出对话框处理、获取当前窗口的title跟url)_第5张图片
部分弹出框的元素是可以定位给到的,就直接用f12查找元素值
Python +Selenium之(窗口切换操作、弹出对话框处理、获取当前窗口的title跟url)_第6张图片

你可能感兴趣的:(selenium自动化)