1. selenium的安装和chromedriver的安装
selenium的安装:
pip install selenium
chromedriver的安装:
有两个下载地址:
1、http://chromedriver.storage.googleapis.com/index.html
2、https://npm.taobao.org/mirrors/chromedriver/
注意:chromedriver的版本一定要与Chrome的版本一致
2. 配置
2.1 解压chromedriver.exe到Google Chrome.exe所在的文件夹里
2.2 配置环境变量
2.3 验证:cmd下输入chromedriver验证是否安装成功
3. 外网用法
项目应用:XQD_20200506.py
注:以下代码可以成功实现,存储在微软本,未体现在XQD_20200506.py的代码里
import requests
from selenium import webdriver
import time
url = 'http://admin.pro.8848map.cn/login.php'
#创建浏览器对象
#指定chrome的驱动
#执行到这里,Selenium会到指定的路径将chrome driver程序运行起来
driver = webdriver.Chrome()
driver.get(url) # 请求页面
time.sleep(3)
#根据xpath、selector、id、class等元素进行信息传入或者执行点击操作
driver.find_element_by_xpath('//*[@class="form-control"]').send_keys('输入用户名') # 登录名的输入框
driver.find_element_by_css_selector('input[type="password"]').send_keys('输入密码') # 密码的输入框
time.sleep(3)
driver.find_element_by_css_selector('input[type="button"]').click() # 点击登录按钮
time.sleep(5)
driver.find_element_by_xpath('//*[@id="bs-example-navbar-collapse-1"]/ul[1]/li[1]/a').click() # 点击"兴趣管理"
time.sleep(5)
driver.find_element_by_xpath('//*[@id="buttonSearch"]').click() # 点击"查询"
time.sleep(5)
#此时已进入最终目标页面,可以直接获取最终目标页面的cookie
cookie_tag = driver.get_cookies()
print(cookie_tag)
# 关闭浏览器(选择性操作)
driver.close()
#处理cookie成需要的格式
cookie = cookie_tag[0]['name'] + '=' + cookie_tag[0]['value']
print(cookie)
#用获取到的cookie,进行requests.get请求
url = 'http://admin.pro.8848map.cn/poi/getPoiByEnvelope.php?zoom=4&eminx=120.56013878705772&eminy=31.175266787973968&emaxx=120.6891056416083&emaxy=31.42393136561657&start=0&offset=200'
headers = {
'Cookie': cookie,
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36'
}
html = requests.get(url=url, headers=headers)
print(html.text)
4. 内网用法
项目出自:XieCha_0417.py、YiYi_0512.py(协查和异议、包括分纳税人三个项目)
内网三个项目存储在公司本异议项目难点复盘:
- selenium输入了用户名和密码成功登陆后,进入的页面跳出一个有确认交互框的弹框,可以用python操作enter键解决;
- 消除弹框后,紧接着又跳出一个重要提示框,只有右上角有x。
一开始解决这个弹出框是找到x所对应的元素,然后click()实现,但是一直报错(找不到这个元素)。
经人提醒,此时的url已经变了,跟登录时的url不是同一个,于是换成了此时的url,成功解决。- 解决了两个弹框后,按照惯用思路,就将终极目标url赋值给第三个url,然后拿到cookie,但怎么都实现不了(还会继续出现上述两个弹框)。
原因是:这个终极目标url是传入了很多参数(前端页面有N多选择框,对其中几个做出了选择)后的url,并且各种参数没有体现在url中
解决方案:拿取referer后的url【成功进入未选择的页面】,将其作为第三个url,亦能成功获取cookie。
5. 详细参考
具体用法参考: https://www.jianshu.com/p/1b63c5f3c98e