Selenium库网页操作备忘录

本文详细描述了如何在Windows环境下配置Selenium库,重点在于Edge浏览器的驱动安装和配置难题,包括版本查找、下载、路径设置以及解决EdgeOptions报错。作者分享了实例和解决步骤,强调了版本匹配的重要性。
摘要由CSDN通过智能技术生成

目录

一、Selenium库配置

1.Selenium库的安装

2.浏览器配置

(1)查看版本:

(2)下载:

(3)配置:

(4)简单测试

3.Edge试运行报错

(1)找不到MicrosoftWebDriver.exe

(2)EdgeOptions

二、实例

1.启动部分

2.操作部分

(1)试了ID,Xpath,Name等多种方法无法定位网页元素?

(2)寻找标签、名字

(3)代码

三、参考文献


一、Selenium库配置

1.Selenium库的安装

贴个官网:Selenium

安装并不费事儿,win版直接pip install selenium就可以,但是喜欢用conda虚拟环境的我因为长时间没有安装过新东西,忘记了在不激活虚拟环境和不使用anaconda的情况下直接pip会安装在conda base环境中,而不是我创建的虚拟环境。

在win11(win10未尝试)中直接在给虚拟环境pip完全可以,而且很方便,我很喜欢,但有一个注意事项:

打开命令提示符(power shell或者其他的什么叫法)→cd 到虚拟环境pip所在目录→“./pip install selenium”而不是“pip install selenium”

2.浏览器配置

配置过程需要浏览器官方的驱动软件,我从Chrome起步,最后配成了Edge。这地方费了我老大功夫了,虽然官网有说明文档,但我觉得那个文档跟假的一样,从配不好到配好了用不了,简直了,我都怀疑我是不是安装了假的selenium。

不同浏览器的配置流程是一样的为:找到自己的浏览器版本,然后在对应的Driver官网上找到对应版本的Driver,下载安装。

(1)查看版本:

(2)下载:

ChromeDriver - WebDriver for Chrome - Downloads (chromium.org)

Microsoft Edge WebDriver | Microsoft Edge Developer

对,上面这个才是,而不是各种各样的镜像或者存储站,这事儿成了我痛苦的根源,因为我的Chrome更新一直开着,所以通过百度和看CSDN得到的很多配置文章中给的下载链接让我一直找不到对应版本的Chrome Driver,我甚至看了相关的Chrome回退的文章,比如以下的旧版本放置站:

Download older versions of Google Chrome for Windows, Linux and Mac (slimjet.com)

(3)配置:

将下载得到的Chromedriver.exe复制一份放置到

浏览器启动程序所在目录下或者python环境的Scripts目录下,

并添加路径环境变量,两个浏览器配置过程是相同的,比如我配置的Edge

现在Selenium支持自动搜索driver路径,所以你不放也可以的,环境变量貌似也不用配置

(4)简单测试

driver = webdriver.Chrome()

driver.get("https://www.selenium.dev/selenium/web/web-form.html")

或者

driver = webdriver.Edge()

driver.get("https://www.selenium.dev/selenium/web/web-form.html")

报错的话,不是代码错了就是版本不匹配,自己找一找。

二、实例

1.启动部分

浏览器加载需要时间,事件监听器什么的太难了,所以我更喜欢让我的代码自己停一下,简单可行。

from selenium import webdriver
import time
options = webdriver.EdgeOptions()
options.use_chromium = True     # 使用google内核
options.add_experimental_option('excludeSwitches', ["enable-logging"])
options.add_argument('--inprivate')   # 无痕模式
options.add_argument('--headless')   # 无界面模式
options.add_argument('--mute-audio')
driver = webdriver.Edge(options=options)  # 启动浏览器
time.sleep(0.5)
driver.get(url)  # 访问网址

2.操作部分

(1)试了ID,Xpath,Name等多种方法无法定位网页元素?

把这句代码加上试一试:

driver.switch_to.frame(driver.find_element_by_id('iframe'))

根据大佬们的说法,原本的定位器在整个框架Frame中,所以无法定位iframe中的东西,这句代码可以将把定位器切换到网页加载出来的灵活的iframe上,当然用完还要切换回去,大佬说的很清楚:selenium自动化driver.switch_to.frame用法-CSDN博客

(2)寻找标签、名字

打开开发者工具,选中代码就能看到对应的框框,选中框框就能看到对应的代码。

Id、name什么的可以直接看到,Xpath在右键菜单中

(3)代码

这一部分其实就很简单,能找到,就能控制。

这里是多个窗口的打开和创建的代码,使用了script:

newTab = "window.open('" + url + "')"

driver.execute_script(newTab)

driver.switch_to.window(driver.window_handles[-1])

通过Id或者xpath找到需要操作的框框,然后操作,

city = driver.find_element_by_id('city')

PR = driver.find_element_by_xpath('/html/body/div[2]/div[9]/select[1]')  #  寻找组件

PR = webdriver.support.ui.Select(PR)  # 下拉菜单转换为可操作对象

PR.select_by_value('28')  #  选择

city.send_keys(myname)  #  填写文本框

3.模拟鼠标移动

我操作的网页貌似增加了一个检测鼠标移动的功能,所以就有了这一项。

from selenium.webdriver import ActionChains
click = driver.find_element(By.XPATH, '/html/body/div[2]/div[4]')
click_x = click.location.get('x')
click_y = click.location.get('y')
ActionChains(driver).move_by_offset(click_x + 5, click_y + 5).click().perform()
ActionChains(driver).move_by_offset(-(click_x + 5), -(click_y + 5)).perform()

三、参考文献

这里只放对我帮助比较大的一些:

selenium自动化driver.switch_to.frame用法-CSDN博客

Python+Selenium+Edge浏览器安装与简单运行(1/2)_python edgedriver-CSDN博客

Python + Selenium + Microsoft Edge浏览器运行环境搭建及配置无界面模式 - lixuelong - 博客园 (cnblogs.com)

msedge-selenium-tools · PyPI

入门指南 | Selenium

ChromeDriver - WebDriver for Chrome - Downloads (chromium.org)

Microsoft Edge WebDriver | Microsoft Edge Developer

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值