Pycharm selenium简单demo及底层代码逻辑实现示例

本文通过一个简单的Selenium Python demo,逐步解析其底层代码实现,包括 webdriver.Chrome() 的创建、driver.get() 的URL访问、find_element_by_方法的元素定位、send_keys() 的文本输入以及click()的点击操作。通过源码跟踪,展示了如何将高层接口转化为底层执行命令,帮助读者深入理解Selenium的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 先来一个selenium简单demo

import time
from selenium import webdriver

# 创建一个webdriver对象
driver = webdriver.Chrome()
# 如果chrome不是安装在默认路径,则要driver = webdriver(executable_path='chrome.exe的指定路径')

# 访问指定url
driver.get('http://www.baidu.com')
# 找到搜索输入框
el = driver.find_element_by_name('wd')
# el = driver.find_element("id", 'kw')
# el = driver.find_element_by_id('kw')

# 对元素进行输入文本的操作
# time.sleep(3)
el.send_keys('F12打开开发者工具')
# 找到搜索按钮,并点击一次
driver.find_element_by_id('su').click()
# 等待
time.sleep(3)
# 关闭浏览器并释放后台进程,不关闭的话,每运行一次,会创建一个webdriver对象在后台进程
driver.quit()

简单定位元素

el = driver.find_element("name",'wd')
el = driver.find_element("id", 'kw')

这两句代码实现定位元素的效果,打开开发者工具->查看器,点击要定位的位置,这里又有id又有name,所以可以通过name或id定位到这个搜索框。
定位元素

上面就不解释了,我这篇主要记录怎么看底层代码,主要是下面的内容。

2 底层代码实现示例

第一句

driver = webdriver.Chrome()

按住ctrl,然后点击函数Chrome,进入Chrome()的实现代码,如下图
在这里插入图片描述所以实际上这句代码是这样的:

driver = WebDriver(executable_path="chromedriver")

还要加导入:

from selenium.webdriver.chrome.webdriver import WebDriver

第二句

driver.get('http://www.baidu.com')

按住ctrl,点击get,到了这个方法的实现代码,如下图:
在这里插入图片描述所以实际上这句代码是这样的:

driver.execute(Command.GET, {'url': 'http://www.baidu.com'})
import选择

Command.GET下面会有红曲线,找不到这个东西,会发现需要导入,导入出现很多选择,如下图,怎么知道导入哪个?
在这里插入图片描述右击打开的源代码文件,点击copy path,会出现该py文件的路径窗口,所以就知道实际应该import哪个了
在这里插入图片描述

from selenium.webdriver.chrome.webdriver import WebDriver

继续上面的,我们走到了

driver.execute(Command.GET, {'url': 'http://www.baidu.com'})

又可以按住ctrl,点击Command,又会出现下图,发现Command.GET实际上就是"get",所以又可以变成这句:

driver.execute("get", {'url': 'http://www.baidu.com'})

在这里插入图片描述

第三句

el = driver.find_element_by_name('wd')

按住ctrl,点击find_element_by_name,到了下图:
在这里插入图片描述所以这句可以变成

from selenium.webdriver.common.by import By
el = driver.find_element(by=By.NAME, value='wd')

再变成

el = driver.find_element("name", 'wd')

在这里插入图片描述

第四句

el.send_keys('F12打开开发者工具')

按住ctrl,点击send_keys
在这里插入图片描述

el._execute("sendKeysToElement",
                      {'text': "".join(keys_to_typing('F12打开开发者工具')),
                       'value': keys_to_typing('F12打开开发者工具')})

第五句

driver.find_element_by_id('su').click()

与第三句一样的步骤,先变成

driver.find_element("id",'su').click()

再按住ctrl,点击click()
在这里插入图片描述

driver.find_element("id",'su')._execute(Command.CLICK_ELEMENT)

再变成

driver.find_element("id",'su')._execute("clickElement")

最终代码:

包含了转换的过程。

import time
from selenium import webdriver

# 创建一个webdriver对象
# driver = webdriver.Chrome()
from selenium.webdriver.chrome.webdriver import WebDriver
from selenium.webdriver.common.utils import keys_to_typing
from selenium.webdriver.remote.command import Command

driver = WebDriver(executable_path="chromedriver")
# 如果chrome不是安装在默认路径,则要driver = webdriver(executable_path='chrome.exe的指定路径')

# 访问指定url
# driver.get('http://www.baidu.com')
# driver.execute(Command.GET, {'url': 'http://www.baidu.com'})
driver.execute("get", {'url': 'http://www.baidu.com'})

# 找到搜索输入框
# el = driver.find_element_by_name('wd')
# el = driver.find_element(by=By.NAME, value='wd')
el = driver.find_element("name", 'wd')

# 对元素进行输入文本的操作
time.sleep(3)
# el.send_keys('F12打开开发者工具')
el._execute("sendKeysToElement",
                      {'text': "".join(keys_to_typing('F12打开开发者工具')),
                       'value': keys_to_typing('F12打开开发者工具')})
# 找到搜索按钮,并点击一次
# driver.find_element_by_id('su').click()
# driver.find_element("id",'su').click()
# driver.find_element("id",'su')._execute(Command.CLICK_ELEMENT)
driver.find_element("id",'su')._execute("clickElement")
# 等待
time.sleep(10)
# 关闭浏览器并释放后台进程,不关闭的话,每运行一次,会创建一个webdriver对象在后台进程
# driver.quit()
driver.service.stop()
<think>嗯,用户想了解在PyCharm中使用Selenium启动Microsoft Edge浏览器的配置方法。首先,我需要回忆一下相关的步骤。根据之前的引用资料,用户需要安装Selenium库、下载Edge驱动,并进行路径配置。 首先,用户需要确保已经安装了Selenium包。在PyCharm中,可以通过项目解释器的设置来安装。用户打开设置,找到Python解释器,然后点击加号搜索selenium进行安装。这部分应该没问题,但要注意版本兼容性。 接下来是下载Edge浏览器驱动。根据引用[3],用户需要到Microsoft的官网下载对应版本的WebDriver。这里需要注意Edge浏览器的版本必须和驱动版本一致。用户需要检查Edge的版本,方法是打开Edge,输入edge://version/,查看版本号,然后去官网下载匹配的驱动。下载完成后,驱动需要放在合适的位置。引用[3]提到,驱动应该放在Python的安装目录下,比如Python3.7的根目录。不过,有些资料说需要改名,但根据用户提供的引用,现在不需要改名,直接放置即可。这可能是因为Selenium的更新,所以直接使用原文件名。 然后,配置路径的问题。如果用户已经将Python的路径添加到系统环境变量中,那么驱动放在Python根目录下应该可以被找到。如果没有,可能需要将驱动所在的路径添加到系统的PATH变量中,或者在代码中指定驱动的路径。例如,使用webdriver.Edge(executable_path='路径'),不过根据引用[3],如果路径配置正确,可能不需要特别指定。 接下来是测试代码。用户需要导入webdriver,然后实例化Edge驱动。引用[4]提供了一个示例代码,使用driver = webdriver.Edge()来启动浏览器,并打开百度首页。这里需要注意,如果驱动不在PATH中,可能需要指定executable_path参数。 可能遇到的问题包括驱动版本不匹配、路径错误、或者浏览器自动更新导致驱动失效。用户需要确保驱动版本与浏览器一致,并且定期检查更新。此外,如果出现权限问题,可能需要以管理员身份运行PyCharm或者确保驱动文件有执行权限。 另外,引用[3]提到,放置驱动的位置是Python的安装目录,比如Python3.7的根目录。用户需要确认自己的Python安装路径,并将驱动正确放置。如果用户使用的是虚拟环境,可能需要将驱动放在虚拟环境的Scripts目录下,或者调整路径配置。 总结步骤:安装Selenium→下载对应Edge驱动→放置驱动到正确位置→编写测试代码。需要注意版本匹配和路径设置,这是常见的问题点。用户如果在测试时出现错误,应首先检查这两点,并参考错误信息进行调试。</think>### 分步教程:在PyCharm中使用Selenium启动Microsoft Edge浏览器 #### 1. 安装Selenium包 - 打开PyCharm,进入项目后依次点击: **File > Settings > Project: [项目名] > Python Interpreter** - 点击右上角`+`号,搜索`selenium`,选择最新版本安装[^2][^3]。 #### 2. 下载Microsoft Edge WebDriver - 查看Edge浏览器版本: 在Edge地址栏输入`edge://version/`,记录**版本号**(如`119.0.2151.44`)。 - 访问[Microsoft Edge WebDriver下载页](https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/),选择与浏览器版本完全匹配的驱动下载。 #### 3. 配置WebDriver路径 - 将下载的`msedgedriver.exe`文件放置到以下位置之一: - **Python安装根目录**(如`C:\Python37\`) - **系统PATH环境变量包含的目录**(如`C:\Windows\`) - 或在代码中指定绝对路径(见步骤4)[^4]。 #### 4. 编写测试代码 ```python from selenium import webdriver # 方式1:自动识别路径(需已配置环境变量) driver = webdriver.Edge() # 方式2:手动指定驱动路径(若未配置环境变量) # driver = webdriver.Edge(executable_path=r'C:\Python37\msedgedriver.exe') driver.maximize_window() # 最大化窗口 driver.get("https://www.baidu.com") # 打开测试页面 ``` #### 5. 验证运行 - 执行代码后,若自动弹出Edge浏览器并跳转至百度页面,表示配置成功[^4]。 --- ### 常见问题排查 | 问题现象 | 解决方案 | |---------|----------| | `SessionNotCreatedException` | Edge浏览器与WebDriver版本不一致,重新下载匹配版本 | | `WebDriverException: Message: 'msedgedriver.exe' executable needs to be in PATH` | 将`msedgedriver.exe`复制到Python根目录或手动指定路径[^3] | | 浏览器闪退 | 检查代码中是否缺少`driver.quit()`或浏览器兼容性问题 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值