Selenium库网页操作备忘录

目录

一、Selenium库配置

1.Selenium库的安装

2.浏览器配置

(1)查看版本:

(2)下载:

(3)配置:

(4)简单测试

3.Edge试运行报错

(1)找不到MicrosoftWebDriver.exe

(2)EdgeOptions

二、实例

1.启动部分

2.操作部分

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

(2)寻找标签、名字

(3)代码

三、参考文献


气死我了,前两周还在用的Selenium tools这周就没了……,这篇文章一下就成了时代的眼泪

一、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

(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")

Chrome不会报错,你可以自己写了,但是Edge会报错,报错了不要紧,失败是成功他妈呀,慢慢来。说起来要是早点知道Chrome Driver的官网,我也不会去找Edge……

3.Edge试运行报错

Selenium上给出使用的简单代码,Chrome是可以的,Edge不行,直接用会报错,

比如:WebDriverException: Message: 'MicrosoftWebDriver.exe' executable needs to be in PATH.

再比如:AttributeError: module 'selenium.webdriver' has no attribute 'EdgeOptions'

还比如:WebDriverException: Message: Service MicrosoftWebDriver.exe unexpectedly exited. Status code was: 1

虽然我很急,但是也没什么用,最终还是慢慢解决了他们。

(1)找不到MicrosoftWebDriver.exe

这个名字显然和我们安装的文件名不太一样,所以,要么你把你的“msedgedriver.exe”重命名为“MicrosoftWebDriver.exe”

要么就在代码中指定名称:driver = webdriver.Edge(executable_path='msedgedriver.exe')

如果还报错,可能是路径问题,这时你可以暴力一点,直接上完整路径:

driver = webdriver.Edge(executable_path= r'C:\Users\Desktop\Test\penv\Scripts\msedgedriver.exe')

(2)EdgeOptions

我相信,用代码来操作浏览器的人,干的事儿不会很简单,所以应该也绕不过浏览器启动设置,对于Edge来说,需要额外加装msedge库,然后使用其中的msedge.selenium_tools工具来协助完成相关操作。以下是额外的代码:

from msedge.selenium_tools import Edge, EdgeOptions

options = EdgeOptions()

options.use_chromium = True

options.add_argument('--inprivate')  # 无痕模式

options.add_argument('headless')  # 无界面模式

driver = Edge(executable_path=r'C:\Users\Desktop\Test\penv\Scripts\msedgedriver.exe',

                        options=options)

二、实例

1.启动部分

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

from selenium import webdriver

from msedge.selenium_tools import Edge, EdgeOptions

import time

options = EdgeOptions()

options.use_chromium = True

options.add_argument('--inprivate')  # 无痕模式

driver = Edge(executable_path=r'C:\Users\ Desktop\Test\penv\Scripts\msedgedriver.exe',

                        options=options)

url = ''

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)  #  填写文本框

三、参考文献

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值