Python自动化——浏览器

部署运行你感兴趣的模型镜像

记:从工作开始即对Python充满兴趣,但是由于平时一直在赶项目,没有充分时间来写一些Demo学习,恰逢这次出差,在隔离期间于是就想到了写一些Python相关的Demo,学习笔记都记录在有道云,优快云主要还是记录一些开发过程中遇到的问题,有机会再同步。

1. 安装环境

  • 安装Anaconda

  • 安装Python和PyCharm

  • 安装Selenium

Selenium

2. 示例代码

先写个简单版,打开网页,后续再补充。

from selenium import webdriver
from time import sleep
from selenium.webdriver.firefox.options import Options

if __name__ == "__main__":
    # 0.安装在自定义路径下时
    options = Options()
    options.binary_location = r'F:\Bsoftwares\Firefox\firefox.exe'
    # 1.创建Chrome浏览器对象,这会在电脑上在打开一个浏览器窗口
    browser = webdriver.Firefox(executable_path=r'F:\GeckoDriver\geckodriver.exe', firefox_options=options)
    # 2.通过浏览器向服务器发送URL请求
    browser.get("https://www.baidu.com/")
    print(browser.title)
    sleep(3)
    # 3.刷新浏览器
    browser.refresh()
    # 4.设置浏览器的大小
    browser.set_window_size(1400, 800)
    # 5.设置链接内容
    element = browser.find_element_by_link_text("新闻")
    element.click()
    element = browser.find_element_by_link_text("“下团组”时间")
    element.click()

3.问题集锦

  1. Error_01

selenium.common.exceptions.SessionNotCreatedException: Message: Expected browser binary location, but unable to find binary in default location, no ‘moz:firefoxOptions.binary’ capability provided, and no binary flag set on the command line

原因: 未找到浏览器的位置
解决措施:
网上方法:
方法①:安装最新版本的Firefox 之后再打开就可以了。(没实测,可能有效,但感觉有点鸡肋,所以就没尝试。)
方法②:最开始处改为

from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

binary = FirefoxBinary('path/to/firefox.exe')
browser = webdriver.Firefox(firefox_binary=binary)

结果又报错:binary is not a Firefox executable	#实测无效,可能由于我FireFox没有安装在默认路径

实测方法:
方法③:可能系统中,FireFox安装在自定义位置,在这些情况下,需要通过功能传递FireFox二进制文件的绝对路径

from selenium import webdriver
from selenium.webdriver.firefox.options import Options

options = Options()
options.binary_location = r'F:\Bsoftwares\Firefox\firefox.exe'
browser = webdriver.Firefox(executable_path=r'F:\GeckoDriver\geckodriver.exe', firefox_options=options)
browser.get("https://www.baidu.com/")

#实测有效

凛冬将至,大家注意保暖!
2022-11-14
Alxa China ZLG

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### 使用Python实现指纹浏览器自动化多线程控制 为了实现在Python中对指纹浏览器进行自动化的多线程操作,可以采用Selenium框架结合Threading库的方式。下面提供了一个具体的实例,展示了如何创建多个线程来并行运行不同的浏览器会话。 #### 导入必要的模块 ```python from threading import Thread from selenium import webdriver import time ``` #### 定义函数用于启动带特定配置的浏览器实例 ```python def start_browser(profile_name): options = webdriver.ChromeOptions() # 添加实验性的选项以模拟不同设备特征 mobile_emulation = {"deviceName": "Nexus 5"} options.add_experimental_option("mobileEmulation", mobile_emulation) # 创建一个新的用户资料目录作为参数传递给ChromeDriver user_data_dir = f"C:/path/to/your/profiles/{profile_name}" options.add_argument(f"user-data-dir={user_data_dir}") driver = webdriver.Chrome(options=options) try: print(f"Starting session with profile {profile_name}") driver.get('http://example.com') # 进行页面交互或其他动作... time.sleep(5) # 模拟等待加载完成 print(f"Session ended for profile {profile_name}.") finally: driver.quit() # 关闭当前窗口及其关联资源 ``` #### 启动多个线程来进行并发测试 ```python if __name__ == "__main__": threads = [] profiles = ["Profile1", "Profile2"] # 可以为每个线程指定唯一的个人资料名称 for p in profiles: thread = Thread(target=start_browser, args=(p,)) threads.append(thread) thread.start() for t in threads: t.join() # 主程序等待所有子线程结束之后再继续往下执行 ``` 此代码片段展示了一种方法,在其中定义了`start_browser()`函数用来初始化带有自定义设置(比如移动仿真和个人资料路径)的新浏览器实例,并将其分配给独立的工作线程。通过这种方式可以在同一台机器上同时打开几个具有独特身份特性的浏览器窗口[^2]。 值得注意的是,当涉及到更复杂的场景时——例如需要共享状态或协调各线程间的行为,则可能还需要引入额外的技术手段如队列、锁机制等来确保安全性和稳定性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值