使用Selenium控制已打开的浏览器和网页

使用Selenium控制已打开的浏览器和网页

之前遇到一个需求,就是需要登录某一个网站然后需要通过selenium从网页上自动获取一些信息;该网站需要通过手机验证码登录,通过selenium自动化登录网页固然可以,但是终究还是需要手动输入手机验证码,所以不如在自动获取信息之前,我们先手动登录网站;即我们后续的操作都在一个已打开的浏览器上操作;

我们可以使用Chrome DevTools协议,使用selenium控制已打开的浏览器,它允许客户检查和调试Chrome浏览器;

首先右击Chrome浏览器,打开“属性”,选择快捷方式Tab页,然后在目标原有内容之后添加如下内容:

[--headless] --remote-debugging-port=9222 --user-data-dir="D:\Chrome"

添加后完整的内容为:

"C:\Program Files\Google\Chrome\Application\chrome.exe" [--headless] --remote-debugging-port=9222 --user-data-dir="D:\Chrome"

 

 

打开cmd,在命令行中输入如下命令,先进入chrome.exe存放的文件目录,然后打开chrome浏览器:

cd C:\Program Files\Google\Chrome\Application\
chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\selenum\AutomationProfile"

当然,也可以直接先在环境变量的path中配置好chrome.exe路径, 之后可以直接执行chrome.exe xxx 命令;

C:\Program Files\Google\Chrome\Application\
 

然后运行如下python代码即可打开你想要打开的网站,并进行一些操作;下面是一个打开网站的例子:

from selenium.webdriver.chrome.options import Options
from selenium import webdriver
load_wait_short = 2
load_wait_middle = 4
load_wait_long = 6


def getChromeBrowser():
    chrome_options = Options()
    chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
    chrome_driver = r"D:\SoftwarePackage\Programming\Python\chromedriver_win32_96_0_4664\chromedriver.exe"
    browser = webdriver.Chrome(chrome_driver, options=chrome_options)
    return browser


def openBrowserWebsite(url):
    browser = getChromeBrowser()
    browser.get(url)
    browser.implicitly_wait(load_wait_short)
    print('web title:', end='')
    print(browser.title)


if __name__ == '__main__':
    openBrowserWebsite(url='https://www.shanghairanking.cn/rankings/bcur/202110')

如果后面需要在打开的浏览器上操作,即可按上述做法举一反三进行操作,大同小异;比如我们可以在这个打开的浏览器上登录网站,然后再通过selenium自动获取数据;

参考:

用selenium控制已打开的浏览器_菲菲夜的博客-CSDN博客icon-default.png?t=LBL2https://blog.csdn.net/weixin_39552387/article/details/84100944使用selenium控制已打开的浏览器 - lovealways - 博客园icon-default.png?t=LBL2https://www.cnblogs.com/lovealways/p/9813059.html

### Selenium 打开京东购物车报错解决方案 当使用Selenium尝试操作网页,如打开京东购物车时遇到错误,通常可能由几个常见原因引起。以下是针对此问题的具体分析建议: #### 1. 浏览器驱动版本不匹配 确保使用ChromeDriver版本与本地安装的Google Chrome浏览器版本相兼容[^2]。如果两者版本不符,则可能导致某些功能无法正常工作。 #### 2. 网络连接不稳定或页面加载超时 网络状况不佳可能会造成页面未能完全加载就触发下一步动作,从而引发异常。可以通过设置显式等待来解决这个问题,给定足够的时间让目标元素变得可交互后再继续执行后续命令。 ```python from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Chrome() wait = WebDriverWait(driver, 10) try: driver.get('https://cart.jd.com/') # 显式等待直到购物车按钮可见并点击它 cart_button = wait.until(EC.element_to_be_clickable((By.ID, 'some-id'))) cart_button.click() finally: driver.quit() # 不管成功与否都会关闭浏览器实例 ``` #### 3. 页面结构变化导致定位失败 网站UI更新后原有XPath或其他选择器表达式不再适用,这时需要重新审查HTML源码以获取最新有效的元素路径。 #### 4. 处理JavaScript弹窗其他动态内容 有些情况下,登录状态验证或者其他形式的身份确认机制会阻止直接访问特定URL。对于这类情况,应该模拟完整的用户行为流程,比如先完成登陆过程再转向目标链接;另外也要注意处理可能出现的各种模态对话框。 #### 5. 使用适当的安全上下文 部分站点为了安全考虑会对自动化工具施加限制措施。此时可以尝试调整`User-Agent`头信息伪装成真实用户的请求,或者启用无界面模式(headless mode),减少被检测到的风险。 ---
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值