1.常用方法
driver = webdriver.chrome()
driver.get("http://www.baidu.com/")
driver.get_cookies()# 获取当前页面Cookie
driver.page_source# 打印网页渲染后的源代码
driver.save_screenshot("长城.png")#截图
driver.get_screenshot_as_file(r'E\a.png')#截图
driver.current_url
driver.title
driver.set_window_size(800,480)
driver.maximize_window()
driver.forward()
driver.back()
driver.refresh()
driver.close()
driver.quit()
driver.find_element_by_id('kw').clear()
driver.find_element_by_id('kw').send_keys('selenium')
driver.find_element_by_id('kw').submit()
driver.find_element_by_id('su').click()
driver.find_element_by_id('kw').size #返回元素输入框窗口的尺寸
driver.find_element_by_id('cp').text #返回元素的文本
driver.find_element_by_id('kw').get_attribute('type') #返回元素的属性值
driver.find_element_by_id('kw').is_displayed() #返回元素是否可见的布尔值
2.鼠标事件
from selenium.webdriver import ActionChains
# 鼠标移动到 ac 位置
ac = driver.find_element_by_xpath('element')
ActionChains(driver).move_to_element(ac).perform()
# 在 ac 位置单击
ac = driver.find_element_by_xpath("elementA")
ActionChains(driver).move_to_element(ac).click(ac).perform()
# 在 ac 位置双击
ac = driver.find_element_by_xpath("elementB")
ActionChains(driver).move_to_element(ac).double_click(ac).perform()
# 在 ac 位置右击
ac = driver.find_element_by_xpath("elementC")
ActionChains(driver).move_to_element(ac).context_click(ac).perform()
# 在 ac 位置左键单击hold住
ac = driver.find_element_by_xpath('elementF')
ActionChains(driver).move_to_element(ac).click_and_hold(ac).perform()
# 将 ac1 拖拽到 ac2 位置
ac1 = driver.find_element_by_xpath('elementD')
ac2 = driver.find_element_by_xpath('elementE')
ActionChains(driver).drag_and_drop(ac1, ac2).perform()
3.键盘事件
from selenium.webdriver.common.keys import Keys
# ctrl+a 全选输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')
# ctrl+x 剪切输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x')
# 输入框重新输入内容
driver.find_element_by_id("kw").send_keys("itcast")
# 模拟Enter回车键
driver.find_element_by_id("su").send_keys(Keys.ENTER)
4.页面验证信息
driver.current_url
driver.title
driver.find_element_by_id('cp').text
try:元素 except:
5.页面等待
强制等待:time.sleep()
隐式等待:
driver.implicitly_wait(10)
显示等待:
from selenium import webdriver
from selenium.webdriver.common.by import By
# WebDriverWait 库,负责循环等待
from selenium.webdriver.support.ui import WebDriverWait
# expected_conditions 类,负责条件出发
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get("http://www.xxxxx.com/loading")
try:
# 页面一直循环,直到 id="myDynamicElement" 出现
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "myDynamicElement"))
)
finally:
driver.quit()
6.表单frame与窗口句柄切换
driver.switch_to.frame('iframe2')
driver.get("http://bj.ganji.com/")
sleep(6)
h = driver.current_window_handle
driver.find_element_by_link_text('北京招聘').click()
sleep(6)
all_h = driver.window_handles
for i in all_h:
if i != h:
driver.switch_to.window(i)
print(driver.current_window_handle)
print(driver.title)
sleep(2)
driver.close()
sleep(1)
driver.switch_to.window(h)
a=driver.find_element_by_xpath('//*[@id="rememzhiwei"]/div/span/a[1]').text
7.对话框处理
driver.get("http://www.maiziedu.com/")
sleep(15)
a=driver.current_window_handle
print(a)
#关闭弹框
driver.find_element_by_xpath('/html/body/div[3]/div[2]/div[3]/div/div').click()
#关闭对话框
driver.switch_to.frame('MEIQIA-IFRAME')
b=driver.current_window_handle
print(b)
driver.find_element_by_xpath('//*[@id="btnHideChat"]/i').click()
8.alert警告框处理
#接受提示框
driver.switch_to_alert().accept()
driver.switch_to_alert().text
driver.switch_to_alert().dismiss()
driver.switch_to_alert().send_keys()
9.上传文件
driver.find_element_by_name('file').send_keys(r'E\a.txt') #定位上传按钮,添加本地文件
10.滚动条调用js
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.set_window_size(800,800)
driver.implicitly_wait(10)
driver.get('https://www.baidu.com/')
driver.find_element_by_id('kw').send_keys('selenium')
driver.find_element_by_id('su').click()
time.sleep(5)
driver.execute_script('window.scrollTo(100,450);')
time.sleep(5)
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(6)
driver.get("https://tieba.baidu.com/index.html")
time.sleep(1)
target_elem = driver.find_element_by_link_text("地区")
driver.execute_script("return arguments[0].scrollIntoView();", target_elem) # 用目标元素参考去拖动
# driver.execute_script("scroll(0,2400)") # 这个是第二种方法,比较粗劣,大概的拖动
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(5)
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)
#播放视频
driver.execute_script("return arguments[0].play()",video)
#播放15秒钟
sleep(15)
#暂停视频
driver.execute_script("return arguments[0].pause()",video)
12.日志捕捉
import logging
from selenium import webdriver
logging.basicConfig(level=logging.INFO,format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') #format参数可以不用
logger = logging.getLogger('baidu_search')
driver = webdriver.Chrome()
logger.info("打开谷歌浏览器")
driver.maximize_window()
logger.info("浏览器窗口最大化")
driver.implicitly_wait(10)
logger.info("隐式等待10秒")
driver.get('https://www.baidu.com/')
logger.info("打开百度首页")
driver.find_element_by_id('kw').send_keys('selenium')
driver.find_element_by_id('su').click()
import time
import os
class Loginfo(object):
def __init__(self, mode='w'): #打开文件
path = os.path.dirname(os.path.abspath('.')) + '/mokuaihua/logs/' # 日志存储路径
filename = time.strftime('%Y-%m-%d_%H-%M-%S', time.localtime())+'.txt'
self.log = open(path+filename,mode,encoding='utf-8')
def log_write(self,msg):
self.log.write(msg)
def log_close(self):
self.log.close()
if __name__ == '__main__':
log = Loginfo()
log.log_write('test 测试')
log.log_close()