selenium 浏览器常用设置和部署

一,chrome浏览器设置

from selenium import webdriver
# 浏览器选项
chrome_options = webdriver.ChromeOptions()
# 使用headless无界面浏览器模式
chrome_options.add_argument('--headless')
# 谷歌文档提到需要加上这个属性来规避bug
chrome_options.add_argument('--disable-gpu')
# 设置默认编码为utf-8
chrome_options.add_argument('lang=zh_CN.UTF-8')
# 隐藏滚动条, 应对一些特殊页面
chrome_options.add_argument('--hide-scrollbars')
# 禁止加载图片
chrome_options.add_argument('blink-settings=imagesEnabled=false')
# 指定浏览器分辨率
chrome_options.add_argument('window-size=1440x900')
# 设置默认请求头
chrome_options.add_argument('user-agent="Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X)AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1"')
# 设置代理
desired_capabilities = chrome_options.to_capabilities()
desired_capabilities['proxy'] = {
    "httpProxy":PROXY,
    "ftpProxy":PROXY,
    "sslProxy":PROXY,
    "noProxy":None,
    "proxyType":"MANUAL",
    "class":"org.openqa.selenium.Proxy",
    "autodetect":False
}
# 启动浏览器,获取网页源代码
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get(url)
# 显示页面源码
html = driver.page_source
# 关闭当前页面
driver.close()
# 退出浏览器
driver.quit()

  

二,Firefox浏览器设置

from selenium import webdriver
# 浏览器选项
firefox_options = webdriver.FirefoxOptions()
# 使用headless无界面浏览器模式
firefox_options.add_argument('--headless')
# 谷歌文档提到需要加上这个属性来规避bug
firefox_options.add_argument('--disable-gpu')
# 设置默认编码为utf-8
firefox_options.add_argument('lang=zh_CN.UTF-8')
# 隐藏滚动条, 应对一些特殊页面
firefox_options.add_argument('--hide-scrollbars')
# 禁止加载图片
firefox_options.add_argument('blink-settings=imagesEnabled=false')
# 指定浏览器分辨率
firefox_options.add_argument('window-size=1440x900')
# driver.maximize_window()
# 设置默认请求头
firefox_options.add_argument('user-agent="Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X)AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1"')
# 设置代理
desired_capabilities = firefox_options.to_capabilities()
desired_capabilities['proxy'] = {
    "httpProxy":PROXY,
    "ftpProxy":PROXY,
    "sslProxy":PROXY,
    "noProxy":None,
    "proxyType":"MANUAL",
    "class":"org.openqa.selenium.Proxy",
    "autodetect":False
}
# 启动浏览器,获取网页源代码
driver = webdriver.Firefox(firefox_options=firefox_options)
driver.get(url)
# 显示页面源码
html = driver.page_source
# 关闭当前页面
driver.close()
# 退出浏览器
driver.quit() 

 三.常用操作

# 清除数据
self.browser.find_element_by_id("TPL_username_1").clear()
# 输入数据
self.browser.find_element_by_id("TPL_username_1").send_keys(f'{i}')
# 点击
self.browser.find_element_by_id("J_SubmitStatic").click()
# xpath获取
self.browser.find_element_by_xpath(f'//*[@id="J_QRCodeLogin"]/div[5]/a[1]').click()
# 鼠标点击
from selenium.webdriver import ActionChains
ac = self.browser.find_element_by_xpath('//*[@id="my-page"]/div/div/div/span[1]')
ActionChains(self.browser).move_to_element(ac).click(ac).perform()
# 动态加载 下拉
self.browser.execute_script("window.scrollBy(0,1000)")
time.sleep(1)
self.browser.execute_script("window.scrollBy(0,2000)")
time.sleep(2)
self.browser.execute_script("window.scrollBy(0,3000)")
time.sleep(0.5)
self.browser.execute_script("window.scrollBy(0,4000)")
time.sleep(0.5)
self.browser.execute_script("window.scrollBy(0,5000)")
time.sleep(0.5)
self.browser.execute_script("window.scrollBy(0,6000)")
# 模拟键盘操作
from selenium.webdriver.common.keys import Keys
self.browser.find_element_by_id("TPL_username_1").send_keys(Keys.NUMPAD5)
Keys.BACK_SPACE    # 回退键(BackSpace)
Keys.TAB    # 制表键(Tab)
Keys.ENTER    # 回车键(Enter)
Keys.SHIFT    # 大小写转换键(Shift)
Keys.CONTROL    # Control键(Ctrl)
Keys.ALT    # ALT键(Alt)
Keys.ESCAPE    # 返回键(Esc)
Keys.SPACE    # 空格键(Space)
Keys.PAGE_UP    # 翻页键上(Page Up)
Keys.PAGE_DOWN    # 翻页键下(Page Down)
Keys.END    # 行尾键(End)
Keys.HOME    # 行首键(Home)
Keys.LEFT    # 方向键左(Left)
Keys.UP    # 方向键上(Up)
Keys.RIGHT    # 方向键右(Right)
Keys.DOWN    # 方向键下(Down)
Keys.INSERT    # 插入键(Insert)
DELETE    # 删除键(Delete)
NUMPAD0 ~ NUMPAD9    # 数字键1-9
F1 ~ F12:F1 - F12键    #
(Keys.CONTROL, ‘a’)    # 组合键Control+a,全选
(Keys.CONTROL, ‘c’)    # 组合键Control+c,复制
(Keys.CONTROL, ‘x’)    # 组合键Control+x,剪切
(Keys.CONTROL, ‘v’)    # 组合键Control+v,粘贴

  

三,部署

1.centos7无桌面环境部署

环境要求:

CentOS 7
Firefox 56.0+
Selenium 3.5+
geckodriver 0.19+

 

Xvfb(X virtual framebuffer)是一个虚拟显示服务器,不需要显示设备也能模拟运行图形界面

安装 Xvfb:

yum install xorg-x11-server-Xvfb bzip gtk3

 

安装火狐浏览器   最新版本https://ftp.mozilla.org/pub/firefox/releases/

# 安装firefox 浏览器
sudo yum -y install firefox
# 查看firefox版本
firefox --version


或
cd /usr/local
wget https://ftp.mozilla.org/pub/firefox/releases/56.0.2/linux-x86_64/en-US/firefox-56.0.2.tar.bz2
tar -jxvf firefox-56.0.2.tar.bz2
ln -s /usr/local/firefox/firefox /usr/bin/firefox
rm -rf firefox-56.0.2.tar.bz2

 

 

 安装selenium

sudo pip3 install selenium

 安装Firefoxdriver

wget https://github.com/mozilla/geckodriver/releases/download/v0.23.0/geckodriver-v0.23.0-linux64.tar.gz
tar -zxvf geckodriver-*.tar.gz
ln -s /root/geckodriver /usr/bin/geckodriver
 
 
# 最新版本下载
https://github.com/mozilla/geckodriver/releases

 

 运行测试:

1.启动虚拟桌面坏境,保持后台运行。

Xvfb :54321 -ac &
:54321是服务启动的端口号,可以任意设置,与下一步保持一致就行

 

2.配置环境变量

export DISPLAY=:54321
 
端口号和上面一致,冒号不能漏

 

3.启动程序测试

from selenium import webdriver
b = webdriver.Firefox(executable_path='/root/geckodriver')
b.get('http://www.baidu.com')
print(b.page_source)
b.quit()

 

  

  

1.3最新chromedriver安装

phantomjs逐步淡出我们的实现,已经不再被支持,chrome集高并发的优点,且目前也已支持无头浏览器。

安装chrome

curl https://intoli.com/install-google-chrome.sh | bash

 

测试

google-chrome-stable --no-sandbox --headless --disable-gpu --screenshot     https://www.suning.com/ # 在当前路径下生成一张截图。

 

下载最新版本的chromedriver,

https://sites.google.com/a/chromium.org/chromedriver/downloads
# 解压
$ unzip chromedriver_linux64.zip
 
# 测试
$ ./chromedriver
 
# 加入环境变量

  

引入虚拟界面(实际没有这样做)

from pyvirtualdisplay import Display
display = Display(visible=0,size=(800,600))
display.start()
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
 
print(driver.page_source)

实际环境中采用的写法,并成功了.

from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
# 使用代理ip
chrome_options.add_argument("--proxy-server=http://202.20.16.82:10152")
# 使用headless无界面浏览器模式
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
# 谷歌文档提到需要加上这个属性来规避bug
chrome_options.add_argument('--disable-gpu')
# 禁止加载图片
chrome_options.add_argument('blink-settings=imagesEnabled=false')
# 设置默认请求头
chrome_options.add_argument("user-agent='Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'")
wd = webdriver.Chrome(chrome_options=chrome_options,executable_path='/home/chrome/chromedriver')
 
wd.get("https://www.163.com")
 
content = wd.page_source.encode('utf-8')
print(content)
 
wd.quit()

  

 

转载于:https://www.cnblogs.com/yoyo1216/p/10136043.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值