python打开浏览器并模拟搜索
演示网站:gofly.v1kf.com我的微信:llike620
打开已存在的浏览器有个很重要的作用就是,可以对于一些登录场景,提前登录好,不需要模拟登录了。 在命令行中执行打开chrome的命令,在图标上找到chrome的安装位置 此时调试模式会监听9222端口 模拟打开百度,并进行搜索打开已存在的浏览器
在cmd命令行下执行命令C:\Program Files\Google\Chrome\Application>chrome.exe –remote-debugging-port=9222
import time
from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.chrome.options import Options import pygetwindow as gw
try: chrome_options = Options() chrome_options.add_experimental_option(“debuggerAddress”, “127.0.0.1:9222”) browser = webdriver.Chrome(options=chrome_options) print(“浏览器已打开”+browser.title) # 切换到前台 windows = gw.getWindowsWithTitle(browser.title) if len(windows) > 0: windows[0].activate() time.sleep(1)
# 新建新标签
browser<span class="token punctuation">.</span><span class="token function">execute_script</span><span class="token punctuation">(</span><span class="token string">"window.open('');"</span><span class="token punctuation">)</span>
browser<span class="token punctuation">.</span>switch_to<span class="token punctuation">.</span><span class="token function">window</span><span class="token punctuation">(</span>browser<span class="token punctuation">.</span>window_handles<span class="token punctuation">[</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">)</span>
time<span class="token punctuation">.</span><span class="token function">sleep</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span>
# 在新标签页中打开一个URL
browser<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token string">'https://www.baidu.com/'</span><span class="token punctuation">)</span>
# 输入搜索词并回车
elem <span class="token operator">=</span> browser<span class="token punctuation">.</span><span class="token function">find_element</span><span class="token punctuation">(</span>By<span class="token punctuation">.</span>ID<span class="token punctuation">,</span> <span class="token string">"kw"</span><span class="token punctuation">)</span>
elem<span class="token punctuation">.</span><span class="token function">send_keys</span><span class="token punctuation">(</span><span class="token string">"唯一客服"</span><span class="token punctuation">)</span>
elem<span class="token punctuation">.</span><span class="token function">send_keys</span><span class="token punctuation">(</span>Keys<span class="token punctuation">.</span>RETURN<span class="token punctuation">)</span>
<span class="token function">print</span><span class="token punctuation">(</span><span class="token string">"获取搜索列表:"</span><span class="token punctuation">)</span>
# 使用WebDriverWait确保搜索结果已经加载
<span class="token function">WebDriverWait</span><span class="token punctuation">(</span>browser<span class="token punctuation">,</span> <span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">until</span><span class="token punctuation">(</span>
EC<span class="token punctuation">.</span><span class="token function">presence_of_all_elements_located</span><span class="token punctuation">(</span><span class="token punctuation">(</span>By<span class="token punctuation">.</span>XPATH<span class="token punctuation">,</span> <span class="token string">"//div[@id='content_left']//h3/a"</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
<span class="token punctuation">)</span>
# 获取所有的搜索结果标题
results <span class="token operator">=</span> browser<span class="token punctuation">.</span><span class="token function">find_elements</span><span class="token punctuation">(</span>By<span class="token punctuation">.</span>XPATH<span class="token punctuation">,</span> <span class="token string">"//div[@id='content_left']//h3/a"</span><span class="token punctuation">)</span>
<span class="token keyword">for</span> result <span class="token keyword">in</span> results<span class="token punctuation">:</span>
<span class="token function">print</span><span class="token punctuation">(</span>result<span class="token punctuation">.</span>text<span class="token punctuation">)</span>
# 关闭标签
browser<span class="token punctuation">.</span><span class="token function">close</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
except Exception as e: print(“An error occurred:”, e)