如何在Python上通过类名正确查找元素?硒相关

2023-12-14

我正在尝试自动化一个流程这一页,根据其html代码,点击该页面右上角的钱包按钮后,会部署4个主要钱包来选择登录该页面。

preview1

所有这些钱包都属于同一类elements__StyledListItem-sc-197zmwo-0 QbTKh,我编写了下面的代码,以便尝试获取它们的按钮名称(Metamask、Coinbase 钱包...),在这里:

driver = webdriver.Chrome(service=s, options=opt) #execute the chromedriver.exe with the previous conditions
driver.implicitly_wait(10)
driver.get('https://opensea.io/') #go to the opensea main page.
WebDriverWait(driver, 3).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="__next"]/div/div[1]/nav/ul/div[2]/li/button'))) #wait for the wallet button to be enabled for clicking
wallet_button = driver.find_element(By.XPATH, '//*[@id="__next"]/div/div[1]/nav/ul/div[2]/li/button') 
wallet_button.click() #click that wallet button
wallet_providers = driver.find_elements(By.CLASS_NAME, "elements__StyledListItem-sc-197zmwo-0 QbTKh") #get the list of wallet providers
for i in wallet_providers:
    print(i)

编译上面的代码后,我注意到它没有打印任何内容,这是由于空数组所致wallet_providers,这很奇怪,因为我知道通过调用find_elements(By.CLASS_NAME, "the_class_name")然后它将返回一个包含共享同一类的元素的数组,但在本例中它没有这样做。

因此,如果有人能解释我做错了什么,我将不胜感激?最后,我只是想设法单击 Metamask 按钮,它并不总是停留在同一位置,有时它是该列表的第一个元素,有时是第二个......


你正在使用这个班级名称 elements__StyledListItem-sc-197zmwo-0 QbTKh其中有空间。

在 Selenium 中,带有空格的类名不会被解析并会抛出错误。

您没有收到错误的原因是您正在使用find_elements它要么返回一个网络元素列表,要么什么也不返回。

那么如何解决这个问题呢?

删除空格并放置一个.而是做一个CSS_SELECTOR

尝试这个:

wallet_providers = driver.find_elements(By.CSS_SELECTOR, ".elements__StyledListItem-sc-197zmwo-0.QbTKh") #get the list of wallet providers

老实说,我们可以有比这更好的定位器,因为这些值似乎197zmwo-0.QbTKh是动态生成的。

我宁愿用这个CSS:

li[class^='elements__StyledListItem'] span[font-weight]

or this xpath:

//li[starts-with(@class,'elements__StyledListItem')]//descendant::span[@font-weight]

另外,您应该像这样打印它:(这是一种方法,但还有其他方法):

Code:

driver.get("https://opensea.io/")

WebDriverWait(driver, 3).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="__next"]/div/div[1]/nav/ul/div[2]/li/button'))) #wait for the wallet button to be enabled for clicking
wallet_button = driver.find_element(By.XPATH, '//*[@id="__next"]/div/div[1]/nav/ul/div[2]/li/button')
wallet_button.click() #click that wallet button
wallet_providers = driver.find_elements(By.CSS_SELECTOR, "li[class^='elements__StyledListItem'] span[font-weight]") #get the list of wallet providers
for i in wallet_providers:
    print(i.get_attribute('innerText'))

控制台输出:

WalletConnect
MetaMask
Coinbase Wallet
Fortmatic

Process finished with exit code 0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Python上通过类名正确查找元素?硒相关 的相关文章

  • super(cls, 实例) 和 super(cls, 子类) 之间有什么区别?

    Won t super cls instance and super cls subclass 两者都返回超类cls 差异是巨大的 super 使用类型 类 第二个参数而不是对象 实例 为您提供未绑定的方法 而不是绑定的方法 就像访问类上的
  • 为什么我在迭代 28 后收到错误:“JSONDecodeError:期望值:第 1 行第 1 列(字符 0)”? [复制]

    这个问题在这里已经有答案了 我正在尝试从政府的 API 中提取数据 该 API 分为多个页面 每页有 10 个观察结果 我编写了一个算法 可以从每个观察中获取重要信息并将其添加到 pandas 数据框中 一切都很顺利 直到我到达迭代 29
  • Objective C:在 gdb 中哪里可以找到

    我正在尝试使用 NSZombie 调试我的程序 调试器确实返回了存在问题的实例的地址 但是我不确定在哪里获取运行命令 shell malloc history 所需的 pid 谁能告诉我在这种情况下使用的正确 pid 是什么 我尝试了 32
  • Python Selenium - 按类和文本查找元素

    我正在尝试对搜索结果进行分页 我得到一个 NoSuchElementException Unable to locate element lt insert xpath here gt 这是 HTML div class pagnHy sp
  • 如何逐步完成 Python 表达式求值过程?

    我想构建一个可视化调试器 它可以帮助编程学生查看表达式求值是如何发生的 子表达式如何求值并被其值 替换 类似于 Excel 中的表达式求值可视化工具 看起来您无法使用 Python 的 pdb 逐步完成此过程 因为其最精细的步骤粒度是代码行
  • 在 Python 中计算稀疏 Gram 矩阵的最快方法是什么?

    格拉姆矩阵是结构矩阵X X T这当然是对称的 当处理稠密矩阵时 numpy dot产品实现足够智能 可以识别自乘以利用对称性 从而加快计算速度 请参阅this https stackoverflow com a 50734430 14440
  • 使用来自其他 Cython 代码的自定义 Cython 代码

    我目前正在尝试优化我的 Python 程序 并开始使用 Cython 以减少函数调用开销 也许稍后会包含优化的 C 库函数 所以我遇到了第一个问题 我在代码中使用组合来创建一个更大的类 到目前为止 我已经将我的一个 Python 类转换为
  • 如何使用 selenium 和 junit 测试多个浏览器(版本)

    我刚刚发现了硒 一个很棒的工具 我计划运行 使用 selenium ide 生成的 junit4 代码 但我需要它与许多浏览器 网络驱动程序一起运行 这个用例有 junit java 模式吗 我的第一个想法是使用 RunWith Param
  • 在 IntelliJ IDEA 中编辑并继续?

    使用 IntelliJ IDEA 社区版进行调试时是否可以编辑一些代码 我在选项中找不到这个功能 是的 这就是所谓的 热插拔 您可以在调试过程中编译修改后的代码 并且类文件将被替换 直到您停止调试 确保在调试器设置中启用 HotSwap 选
  • C++ 访问嵌套类的私有成员

    标题可能有点误导 我有以下问题 我有一棵由叶子和内部节点组成的树 用户应该能够在叶子中存储任何信息and该树有一些方法可以获取一组用户定义的值 并且需要在恒定时间内 未摊销 访问相应的叶子 我提出了以下想法 但它不起作用 因为不幸的是我无法
  • 使用 Opencv 屏蔽水平线和垂直线

    我正在尝试删除该图像中的水平线和垂直线 以便拥有更清晰的文本区域 我正在使用下面的代码 它遵循这个guide https docs opencv org 3 2 0 d1 dee tutorial moprh lines detection
  • Jupyter 笔记本无法连接到内核

    我正在尝试使用 Python 3 内核 检查它是否在 kernelspec 列表中 我创建了一个笔记本 并在第一个单元格中print test 当我执行单元格时 什么也没有发生 我刚看到In 它似乎永远不会执行 最终我得到 Connecti
  • 在网络共享或 Intranet 项目上编译网站时请求“System.Web.AspNetHostingPermission”类型的权限失败

    我已经使用 Windows 7 一段时间了 但自从升级以来 我还没有必要使用特定的旧版 Intranet 应用程序 不幸的是 该应用程序被设置为托管在 Intranet 服务器上的 ASP NET 网站项目 当我在 Visual Studi
  • Pickle 动态参数化子类

    我有一个通常存储腌制类类型的系统 我希望能够以相同的方式保存动态参数化的类 但我不能 因为我在尝试腌制一个未全局找到的类 未在简单代码中定义 时收到 PicklingError 我的问题可以建模为以下示例代码 class Base obje
  • 我应该为 MySQL 使用什么 python 3 库? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 据我所知 MySQLdb 仍然没有移植到 Python 3 pypy 上似乎有另一个名为 PyMySQL
  • 我可以显示我在 PHP 中设置的所有 cookie 吗?

    我正在尝试诊断 cookie 中的错误 但 cookie 的名称不是应有的名称 PHP 有没有办法打印我的域设置的所有 cookie 你有没有尝试过 print r COOKIE
  • pandas to_sql sqlalchemy 与 secure_transport 的连接

    我正在尝试将数据发送到具有 require secure transport ON 的服务器上的 mysql 数据库 当我尝试使用以下代码连接到它时 import pandas as pd import pymysql from sqlal
  • 根据给定列表中的值替换列中的值[重复]

    这个问题在这里已经有答案了 我在数据框中有一列 仅允许定义列表中存在的值 例如 给定列表 l1 1 2 5 6 如果列表中不存在列中的值 我需要将每个值替换为 0 column Expected column 1 1 5 5 2 2 3 0
  • Python Camelot无边框表格提取问题

    我正在努力从 pdf 文件中提取一些无边框表格 如下图所示 我已经安装了 python camelot 如图所示here https github com socialcopsdev camelot并且仅适用于有边框的表格 请参阅以下详细信
  • Facebook Messenger 机器人的日期选择器 webview - 无法将字段值带回机器人的输入字段

    我正在使用 Dialogflow 和 Messenger 开发聊天机器人 Webhook 是用 Python 3 x 编写的 我面临着如何再次将数据从 webview 传输到信使聊天窗口以继续与用户对话的问题 Messenger 聊天机器人

随机推荐

  • xsd:choice 的 minOccurs 和 maxOccurs 的含义?

    有什么区别
  • Python 3 中具有列表理解的多行用户输入

    这里完全是 Python 新手 我正在使用 Python 3 解决 CodeAbbey 的问题 我希望得到帮助来缩短用户输入的代码 假设我想从用户那里获取以下输入 3 2 3 4 5 6 7 第一行是案例数 接下来的每一行都是案例本身 有
  • 如何在条形图中显示每个条形的条形值?

    需要查看条形图中的条代表的精确值 而不是 Y 轴上的近似值 这怎么可能做到呢 谢谢阅读 在 iReport 3 7 6 中 您只需选中 BarPlot 属性下的 显示标签 框即可 在之前的版本 3 1 4 中 我必须创建一个 ChartCu
  • Python - 英语翻译器

    用 Python 编写程序将英语单词和 或短语翻译成其他语言的最佳方法是什么 AJAX Language API 这是一个非常困难的问题 语言非常非常very复杂的 想想你必须做的所有事情 解析这个短语 弄清楚这些词的意思 然后翻译它们 这
  • 如何禁用 NSURLConnection 中的 keepalive?

    有什么办法可以强制NSURL连接不重复使用当前的持久连接但要创建一个新的 我正在努力保护自己免受这个已知的影响iOS8 保活错误 如果 iOS 8 收到带有 Keep Alive 标头的 HTTP 响应 它会保留此标头 连接稍后重用 应该如
  • 查找包含带有标签的子任务的家长问题

    我有一个 JIRA 项目 我的一些任务包含标签为 needDesign 的子任务 是否可以找到包含具有该标签的子任务的所有父任务 我使用ondemand jira版本 Jira JQL 并非不提供开箱即用的功能 但是有许多扩展 JQL 的附
  • javafx平台runlater返回结果

    我正在开发 JavaFX 应用程序 在我的场景中是显示在 JavaFX 中创建的密码提示 该提示需要带有两个选项的密码OK and Cancel 我已返回用户输入的密码 我的显示密码对话框的类别是 public static String
  • 如何在不使用 ++ 或 + 或其他算术运算符的情况下将两个数字相加

    如何在不使用 或 或任何其他算术运算符的情况下将两个数字相加 这是很久以前在一次校园面试中被问到的问题 不管怎样 今天有人问了一个关于一些位操作的问题 并在回答中给出了一个漂亮的指南斯坦福有点玩弄 这是我前段时间为了好玩而写的 它使用一个二
  • jquery®ex 的电话号码格式

    我需要验证任何输入 val 并将其转换为电话号码格式 即 input 呃 f375g25123435s67我需要转换成 375 25 1234567 keyup function newval this val replace D g ne
  • 为我的网站编写
    标记的正确方法,以提供我们公司的联系方式

    我正在使用 asp net mvc 5 构建一个网站 我想提供我们公司的联系方式 如电话 电子邮件 邮政地址等 所以我使用了
  • 如何将 NSString 初始化为带双引号的文本[重复]

    这个问题在这里已经有答案了 我想将 NSString 初始化为带双引号的 头发 可能吗 有什么帮助吗 但 NSString str hai 我想将其转换为 hai 而不直接初始化 有什么帮助吗 如果您想转换现有字符串 请使用以下命令 NSS
  • 将 R 中二项式 glm 的 cbind() 格式转换为具有单独行的数据帧

    按照此处的示例 R中二项式glm的输入格式 我有一个数据集y cbind success failure 每行代表一种治疗 我的问题是 如何将每个观察值转换为 二进制 格式 例如 每个观察值 y 0 或 1 工作示例在这里 df1 lt d
  • 使用 Retrofit 和 Gson 解析 JSON 数组响应

    这是来自 Web 服务的 JSONArray 响应 sponsors leg id NYL000067 type primary name AUBRY leg id NYL000171 type cosponsor name PERRY l
  • 如何修复 java.lang.NoSuchMethodError: sun.security.ssl.SSLSessionImpl

    应用程序通过读取jsf形式的参数来发送信件 我不明白为什么以及如何修复它 因为当您从开发环境运行时 一切正常 当我将应用程序放在 VPS 服务器上时 我收到下一个错误堆栈 尽管应用程序根据需要在本地主机上运行 StandardWrapper
  • 防止SQL注入的好方法有哪些? [复制]

    这个问题在这里已经有答案了 我必须为我的在职培训公司编写一个应用程序管理系统 前端将用 C 完成 后端将用 SQL 完成 我以前从未做过这种规模的项目 在学校里我们只学过有关 SQL 的基础课程 不知何故 我们的老师完全没有讨论SQL注入
  • 难道真的不能写一个在windows中隐藏密码的php cli密码提示吗?

    我花了几个小时试图找到一种在 php 中编写跨平台密码提示的方法 该提示隐藏用户输入的密码 虽然这可以通过使用 stty echo 在 Unix 环境中轻松完成 但我尝试了各种 passthru 和 system 调用方法来使 Window
  • Java-PLSQL-从java调用记录表

    PLSQL 包过程声明 TYPE custom type IS TABLE OF single rec type TYPE single rec type IS RECORD id name etc Problem 但custom type
  • 通过 Google Apps 脚本在日历上创建带有附件的活动

    我找不到向我的日历活动添加附件的方法 我希望应该有一个像下面的代码片段这样的简单方法 function createNewEvent var file DriveApp getFileById 1eqaThzYmTbZzP my file
  • System.Windows.Forms.WebBrowser 等待页面完全加载

    我一直在尝试很多不同的解决方案wait and async 似乎没什么作用 我无法找到实际上完全等待页面完全加载的解决方案 所有代码都在等待一段时间 但直到页面加载完毕 我在下一个过程中收到错误 我如何将示例代码设置为等待模式 直到Docu
  • 如何在Python上通过类名正确查找元素?硒相关

    我正在尝试自动化一个流程这一页 根据其html代码 点击该页面右上角的钱包按钮后 会部署4个主要钱包来选择登录该页面 所有这些钱包都属于同一类elements StyledListItem sc 197zmwo 0 QbTKh 我编写了下面