查看浏览器版本,安装对应的驱动
https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
然后将其中的.exe文件复制到浏览器的安装路径下。
浏览器安装路径:C:\Program Files (x86)\Microsoft\Edge\Application
利用python的脚本语言,指定浏览器的驱动。(一定要指定到驱动的名称,即复制进浏览器安装路径里的.exe文件的名称。如果只到application,python脚本运行会报错。)
import time from selenium import webdriver # 通过指定msedgdriver的路径来实例化driver对象,msedgedriver放在当前目录 # msedgedriver添加环境变量了,但是不知道为什么不指定路径就会报错 driver = webdriver.Edge('C:\Program Files (x86)\Microsoft\Edge\Application\msedgedriver') # driver = webdriver.Edge() # 控制浏览器访问url地址 driver.get("https://www.baidu.com/") # 百度搜索框中搜索python driver.find_element_by_id('kw').send_keys('python') # 点击搜索python driver.find_element_by_id('su').click() time.sleep(6) # 6s后退出浏览器 driver.quit
driver.page_source
当前标签浏览器选然后的源码
driver.current_url
响应的源码(不是请求的源码
driver.close()
关闭标签
driver.quit()
关闭浏览器
driver.forward()
页面前进
driver.back()
页面后退
driver.screenshot(img_name)
页面截图
import time from selenium import webdriver driver = webdriver.Edge('C:\Program Files (x86)\Microsoft\Edge\Application\msedgedriver') url = 'http://www.baidu.com' driver.get(url) print(driver.page_source) driver.save_screenshot('baidu.png')
#通过xpath进行元素定位 driver.find_element_by_xpath('//*[@id="kw"]').send_keys('python3')
# 通过css选择器 元素定位:复制selector #kw driver.find_element_by_css_selector('#kw').send_keys('德赫')
# 通过name属性值进行元素定位 driver.find_element_by_name('wd').send_keys('Draco')
# 通过class属性进行元素定位 driver.find_element_by_class_name('s_ipt').send_keys('')
# 通过链接文本 driver.find_element_by_link_text('hao123').click # 报错,停在百度 driver.find_element_by_partial_link_text('hao123').click() # 跳到123
# 通过tag定位 # 目标元素是当前html中唯一标签,或众多定位标签中第一个的时候 print(driver.find_element_by_tag_name('title'))
find_elements
返回列表,匹配不到返回空列表find_element
返回第一个匹配到的对象。匹配不到抛出异常工具、智能指针
# 获取当前所有标签页的句柄 构成的列表 current_windows = driver.window_handles # 根据句柄列表索引下标进行切换 driver.switch_to.window(current_windows[0])
from selenium import webdriver driver = webdriver.Edge('C:\Program Files (x86)\Microsoft\Edge\Application\msedgedriver') url = 'https://cd.58.com/' driver.get(url) # 验证当前url、句柄 print(driver.current_url) print(driver.window_handles) # https://cd.58.com/ # ['CDwindow-4560EDDD575AF11C521237B39D55F43B'] # 定位 点击租房按钮 el = driver.find_element_by_xpath('/html/body/div[3]/div[1]/div[1]/div/div[1]/div[1]/span[1]/a') el.click() print(driver.current_url) print(driver.window_handles) # # https://cd.58.com/ # ['CDwindow-1C5285AC304F92464CCEF628E0E0ADCA', 'CDwindow-A2AB402B3B27B0BE9BCD11BC75D1883E'] # 两次验证发现url一样,句柄多了一个,但是url并未跳转,操作权还在首页 # 移动句柄 driver.switch_to.window(driver.window_handles[-1]) el_list = driver.find_element_by_xpath('/html/body/div[6]/div[2]/ul/li/div[2]/h2/a') print(el_list)
切换框架
driver.switch_to.frame()
from selenium import webdriver driver = webdriver.Edge('C:\Program Files (x86)\Microsoft\Edge\Application\msedgedriver') url = 'https://qzone.qq.com/' driver.get(url) # 切换框架 driver.switch_to.frame('login_frame') # 直接点击头像登录 driver.find_element_by_id('img_out_qq号').click() # 若未切换框架,则定位不到框架内的,报错
get.cookies() # 拿到所有cookies
获取cookies,转成字典
from selenium import webdriver driver = webdriver.Edge('C:\Program Files (x86)\Microsoft\Edge\Application\msedgedriver') url = 'https://www.baidu.com/' driver.get(url) print(driver.get_cookies()) # 返回的是一个列表,每个元素是一个字典 cookies = {data['name']:data['value'] for data in driver.get_cookies()} print(cookies)
# 删除一条cookie driver.delete_cookie("domain") # 删除所有cookie driver.delete_all_cookies() # xs python大小写知意
滚轮下滑才会触发
from selenium import webdriver driver = webdriver.Edge('C:\Program Files (x86)\Microsoft\Edge\Application\msedgedriver') url = 'https://cd.lianjia.com/' driver.get(url) # 要点击的button在下面,没有拖动滚轮触发 # js实现拖动 js = 'scrollTo(0,500)' # 一般宽屏,只移3纵轴 driver.execute_script(js) el_button = driver.find_element_by_xpath('/html/body/div[2]/div/div[1]/div[2]/div[1]/a[2]') el_button.click()
time.sleep()
driver.implicity_wait(10)
from msedge.selenium_tools import Edge, EdgeOptions url = 'http://www.baidu.com' # 创建配置对象 opt = EdgeOptions() # 添加配置参数 opt.add_argument('--headless') opt.add_argument('--diaable-gpu') # 创建浏览器对象 # 添加配置对象 # driver = Edge(options=opt) driver.get(url) driver.save_screenshot('baidujietu.png')
emmmm不知道哪里问题,还是会跳出来浏览器,仿佛参数没用