浏览器查看信息技巧和弹出框处理、多窗口切换
浏览器查看信息技巧?
webdriver对象的一些方法:
* 获取当前窗口的title driver.title
* 获取当前窗口的地址url driver.current_url
* 随着用户的操作 title和current_url会变化
* 截屏 driver.get_screenshot_file('ssl.png')
关于双反斜杠和r的解释:
双反斜杠'\\'是为了防止转义 我们常用 '/'来表示相对路径 用 ‘\’来表示绝对路径
写法一:path = ‘C:\\adb\\selenium’
写法二:path =r 'C:\adb\selenium'
写法三:path = 'C:/adb/selenium'
代码实现:
from selenium import webdriver
# 指定是Chrome驱动
driver = webdriver.Chrome(r"C:\webdriver\chromedriver.exe")
# driver.implicitly_wait(10) 隐式等待
driver.get('https://www.baidu.com')
# driver.get('https://music.163.com')
# print(driver.title)
# print(driver.current_url)
# driver.get_screenshot_as_file('c:\\pei.png')
# 如果我想部分截屏,可以通过查找元素来定位
ele = driver.find_element_by_css_selector('#su')
ele.screenshot('button.png') # 百度一下的图片
driver.quit()
=========================================================================================================================
切换窗口?
切换到新的窗口里面操作:
* 循环遍历 driver.window_handles
* driver.switch_to.window(handle)方法切入新窗口
* 检查该窗口特点,是否为要切入的那个
切换到最初的窗口:
* 保存主窗口的handle driver.current_window_handle
关闭窗口:
* close方法
*注意*:close()与quit()方法发热区别:close()是关闭当前窗口,而quit()是退出浏览器所有的窗口,但是不会退出chromedriver驱动,但仍处于代码可执行状态。
代码实现:
import time
from selenium import webdriver
driver = webdriver.Chrome(r"C:\webdriver\chromedriver.exe")
driver.implicitly_wait(10)
driver.get('https://www.baidu.com/')
print(driver.title)
driver.find_element_by_id('kw').send_keys('松勤\n')
time.sleep(1)
driver.find_element_by_css_selector('div[id="1"] h3.t>a').click()
time.sleep(1)
print(driver.title)
# 获取当前页面的句柄
main_handle = driver.current_window_handle
# 获取所有句柄
handles = driver.window_handles
for handle in handles:
print(handle)
driver.switch_to.window(handle)
if '松勤网 - 松勤软件测试' in driver.title:
print('成功跳转')
break
# 点击全部课程分类
driver.find_element_by_css_selector('a[href="/course/explore"]').click()
time.sleep(5)
# 切换到首页句柄
driver.switch_to.window(main_handle)
print(driver.title)
driver.quit()
=========================================================================================================================
弹出框处理?
对话框来说一般有三种:alert confirm prompt
操作方法:driver.switch_to.alert.accept() # 点击OK
driver.switch_to.alert.text # 得到对话框内容
driver.switch_to.alert.dismiss() # 点击Cancel
driver.switch_to_alert.send_keys() # 输入内容
下面附上a1.html代码截图:
代码实现:
import time
from selenium import webdriver
driver = webdriver.Chrome(r"C:\webdriver\chromedriver.exe")
# driver.implicitly_wait(10)
driver.get('file:///C:/Users/Administrator/PycharmProjects/1120/web_driver/lesson4/al.html')
driver.find_element_by_id('b3').click()
time.sleep(3)
# driver.switch_to.alert.accept() # 点击OK的弹窗
# driver.switch_to.alert.dismiss() # 点击Cancel(有确定、取消的弹窗)
txt = driver.switch_to.alert.text # 得到对话框内容
print(txt)
driver.switch_to.alert.send_keys('天天向上')
driver.switch_to.alert.accept()
# driver.find_element_by_id('other').click()
# driver.quit()
=========================================================================================================================
刷新页面、前进、后退?
* 刷新页面 refresh
* 前进 forword
* 后退 back
代码实现:
import time
from selenium import webdriver
driver = webdriver.Chrome(r"C:\webdriver\chromedriver.exe")
# ----------------------------------
driver.get('http://check.ytesting.com')
driver.find_element_by_id('username').send_keys('sdfdsf')
driver.find_element_by_id('password').send_keys('sdfdsf')
time.sleep(2)
# driver.refresh()
driver.back()
driver.forward()
# ----------------------------------
input('press any key to quit...')
driver.quit() # 浏览器退出