一、获得验证信息
# 当前页面的标题title
# 当前页面的url
# 当前页面的标签中的内容
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get('http://www.baidu.com')
# 打印title
title = driver.title
print(title)
# 打印页面的url
url = driver.current_url
print(url)
# 获取用户名
username = driver.find_element_by_xpath("//*[@id='s_username_top']/span").text
print(username)
driver.quit()
二、元素等待
1、显性等待
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Firefox()
driver.get('http://www.baidu.com')
# 在设置的时间内,默认每隔一段时间检测一次是否存在,检测不到抛异常
element = WebDriverWait(driver, 5, 0.5).unitl(
EC.presence_of_element_located((By.ID, 'kw')) # 判断是否存在
)
element.send_keys(xx)
2、隐性等待
driver.implicitly_wait(10) # 隐形等待10s
3、使用sleep函数
三、iframe切换
# 通过iframe表单嵌入一个页面,直接定位会出错
driver.get(...)
# 切换到iframe(id="if"),便可以正常定位了,默认为id或name属性
# 如果没有id或name属性,可通过xpath定位到iframe,在把对象传给
# xf = driver.find_element_by_xpath('//*[@class="if"]')
# driver.switch_to.frame(xf)
driver.switch_to.frame("if")
# 完成后,跳出iframe,跳出上一级
driver.switch_to.parent_frame()
# 如果有多层表单,想要跳到最外层
driver.switch_to.default_content()
# submit的应用
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get('http://youdao.com/')
driver.find_element_by_id('translateContent').send_keys('hello')
driver.find_element_by_id('form').submit()
time.sleep(2)
driver.quit()
四、警告窗处理
# 警告窗switch_to_alert()
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
driver = webdriver.Firefox()
driver.implicitly_wait(10)
driver.get('http://baidu.com')
# 鼠标悬浮到设置上
link = driver.find_element_by_link_text('设置')
ActionChains(driver).move_to_element(link).perform()
# 打开搜索设置
driver.find_element_by_link_text('搜索设置').click()
# 保存设置
driver.find_element_by_class_name("prefpanelgo").click()
time.sleep(2)
# 接受警告窗==确认
driver.switch_to_alert().accept()
driver.quit()
五、操作cookie
# 操作cookie
# 得到cookie:get_cookies(),或get_cookie(name)
# 添加cookie:add_cookie()
# 删除cookie:全部:delete_all_cookies(),一个:delete_cookie(name)
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('http://www.baidu.com')
# 获取cookie信息
cookie = driver.get_cookies()
print(cookie)
# 添加cookie
driver.add_cookie({'name': 'key-aaaa', 'value': 'value-bbbb'})
# 遍历
for cookie in driver.get_cookies():
print("%s -> %s" % (cookie['name'], cookie['value']))
driver.quit()
六、调用js
# 调用js操作滚动条,textarea填充内容
# 执行js execute_script(js)
from selenium import webdriver
from time import sleep
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
# 设置浏览器的大小
driver.set_window_size(600, 600)
# 搜索
driver.find_element_by_id('kw').send_keys('selenium')
sleep(2)
driver.find_element_by_id('su').click()
sleep(2)
# 通过js设置浏览器滚动条的位置,水平,垂直
js = "window.scrollTo(100, 450);"
driver.execute_script(js)
sleep(3)
# driver.quit()
七、处理HTML5的视频播放
# 操作video标签
from selenium import webdriver
from time import sleep
driver = webdriver.Firefox()
driver.get('http://videojs.com')
video = driver.find_element_by_xpath('//*[@id="preview-player_html5_api"]')
# 返回播放文件地址
url = driver.execute_script("return arguments[0].currentSrc;", video)
print(url)
# 播放视频
print("start")
driver.execute_script("return arguments[0].play()", video)
# 播放5s
sleep(5)
# 暂停视频
print('stop')
driver.execute_script("arguments[0].pause()",video)
driver.quit()
八、屏幕截图
# 截图
from selenium import webdriver
from time import sleep
driver = webdriver.Firefox()
driver.get('http://www.baidu.com')
driver.find_element_by_id('kw').send_keys('selenium')
driver.find_element_by_id('su').click()
sleep(2)
# 截取当前窗口,并保存指定位置
driver.get_screenshot_as_file("C:\\Desktop\\baidu_img.jpg")
driver.quit()
九、验证码
# 设置验证码
# 设计一个万能验证码,
from random import randint
# 生成一个1000到9999之间的随机整数
n = randint(1000, 9999)
print('生成的随机数:%d' %n)
number = input("请输入随机数")
print(number)
number = int(number)
if number == n:
print('登录成功') # 当验证码与输入的一致
elif number == 132741: # 万能验证码
print("登录成功")
else:
print("验证码输入有误")