100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > python chrome headless_Chrome Headless模式(二)——Python+selenium+headerless

python chrome headless_Chrome Headless模式(二)——Python+selenium+headerless

时间:2022-12-23 09:37:34

相关推荐

python chrome headless_Chrome Headless模式(二)——Python+selenium+headerless

selenium调用headerless

1. 基础环境:

我使用的环境:

python:3.5.4

python的selenium库: 3.141.0

chrome浏览器:71.0.3578.98

注意:一定要确保chrome浏览器和chromedriver版本对应,如果不对应,可能会出现各种奇怪的报错

2. selenium使用headless模式

如何通过selenium调用headless模式呢?下面是python的代码

from selenium importwebdriver

chrome_options=webdriver.ChromeOptions()#无头模式

chrome_options.add_argument('--headless')#实例化Chrome driver

driver=webdriver.Chrome(chrome_options=chrome_options)#打开百度地图

driver.get("/")#截屏,文件保存为baidu-map.png

driver.save_screenshot("baidu-map.png")

3.浏览器设置窗口大小

chrome_options.add_argument('--window-size=1280,800')

4. 打开新的标签页

js代码可window.open(url)可在新窗口打开一个网页, dirver可执行js代码,具体代码如下:

js="window.open('/')"driver.execute_script(js)

5. 切换窗口

比如我们打开的第一个页面是[百度地图], 第2个窗口打开的页面是百度.如果我们想在第2个页面的输入框输入selenium,代码如下

from selenium importwebdriver

chrome_options=webdriver.ChromeOptions()#无头模式

chrome_options.add_argument('--headless')#设置窗口大小

chrome_options.add_argument('--window-size=1280,800')#实例化Chrome driver

driver=webdriver.Chrome(chrome_options=chrome_options)#打开百度地图页面

driver.get("/")

js="window.open('')"driver.execute_script(js)

driver.find_element_by_id("kw").send_keys("selenium")

driver.save_screenshot("baidu-map5.png")

driver.quit()

但是很奇怪, 代码报错了,no such element: Unable to locate element: {"method":"id","selector":"kw"} 找不到这个元素.但是我们看百度的页面命名可以找到这个元素啊. 我们在这步操作之前截一张图就可以看出来,页面扔在第一个页面,即百度地图的页面, 这时候我们需要切换一些窗口.

注意: 以前的方法,diver.switch_to_window() 已经被driver.switch_to.window替代

search_windows=driver.current_window_handle

all_handles=driver.window_handlesfor handle inall_handles:if handle !=search_windows:

driver.switch_to.window(handle)

6. 关闭窗口和关闭浏览器

driver.quit() 关闭浏览器

driver.close() 关闭标签页.

这2个的使用场景是不同的:

1) 在我们的case执行完对浏览器的操作后,一定要加上driver.quit() ,不然会导致内存爆满;

2) 如果我们只想关闭一个窗口, 则用driver.close()

7. 添加代理

chrome_options.add_argument("--proxy-server=http://" + ip:port)

8. 修改User-Agent

#修改User-Agent

chrome_options.add_argument('user-agent='你想修改成的User-Agent')

9.禁用图片

chrome_options.add_argument('blink-settings=imagesEnabled=false')

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。