IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Pycharm selenium简单demo及底层代码逻辑实现示例 -> 正文阅读

[Python知识库]Pycharm selenium简单demo及底层代码逻辑实现示例

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()
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-03-08 22:24:55  更:2022-03-08 22:27:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/31 3:26:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码