使用 Selenium 和 Python 选择带有
标签的组合框选项

2023-12-06

我一直在尝试自动化一些非常无聊的东西(因为我一直在犯错误,我想将它们减少到尽可能接近零),本质上,我得到了必须通过以下方式输入到我们系统中的资产:一个人经历了一个可怕的过程。这是我现在的问题:

我的目标是在下拉列表(ctl00_CPH1_cmbClasses_DropDown)上选择“手机”选项。另外,出于安全原因以及它是受保护的公司页面这一事实(到目前为止我已经处理了登录和导航),我只能显示代码片段,以免损害它。

编辑 1(修改此以添加更多 HTML 代码)

<td class="rcbInputCell rcbInputCellLeft" style="width:100%;"><input name="ctl00$CPH1$cmbClasses" type="text" class="rcbInput radPreventDecorate" id="ctl00_CPH1_cmbClasses_Input" value="" /></td><td class="rcbArrowCell rcbArrowCellRight"><a id="ctl00_CPH1_cmbClasses_Arrow" style="overflow: hidden;display: block;position: relative;outline: none;">select</a></td>
                </tr>
            </table><div class="rcbSlide" style="z-index:6000;"><div id="ctl00_CPH1_cmbClasses_DropDown" class="RadComboBoxDropDown RadComboBoxDropDown_WebBlue " style="display:none;width:140px;"><div class="rcbScroll rcbWidth" style="width:100%;"><ul class="rcbList" style="list-style:none;margin:0;padding:0;zoom:1;"><li class="rcbItem"></li><li class="rcbItem">CELL PHONES</li><li class="rcbItem">CELLULAR PHONE SCRAP (WITHOUT BATTERIES)</li><li class="rcbItem">COMPUTER - DESKTOP</li><li class="rcbItem">COMPUTER -TOWER</li><li class="rcbItem">COMPUTERS</li><li class="rcbItem">COMPUTERS - SFF</li><li class="rcbItem">COPPER BEARING - LOW GRADE</li><li class="rcbItem">Desktop</li><li class="rcbItem">FLOPPY DISK DRIVES</li><li class="rcbItem">GARBAGE - NON HAZARDOUS</li><li class="rcbItem">LAPTOPS</li><li class="rcbItem">LCD Monitor</li><li class="rcbItem">MISC. ELECTRONICS</li><li class="rcbItem">MISCELLANEOUS</li><li class="rcbItem">MODEMS</li><li class="rcbItem">NETWORK EQUIPMENT</li><li class="rcbItem">OCC</li><li class="rcbItem">PHONES - DIGITAL</li><li class="rcbItem">PRINTERS</li><li class="rcbItem">SERVERS</li><li class="rcbItem">SERVERS - TOWER</li><li class="rcbItem">Telecom Equipment</li><li class="rcbItem">Telephone</li><li class="rcbItem">Telephone Accessory</li><li class="rcbItem">TEST EQUIPMENT</li><li class="rcbItem">WIRE &amp; CABLE - MISC. </li></ul></div></div></div><input id="ctl00_CPH1_cmbClasses_ClientState" name="ctl00_CPH1_cmbClasses_ClientState" type="hidden" />
        </div>

这是页面(公司 Web 表单)中的组合框代码,我正在尝试选择它,但我当前的代码和尝试(一些来自 Stack Overflow 中的其他帖子)到目前为止都失败了,这是我迄今为止尝试过的:

def fast_multiselect(driver, element_id, labels):
select = browser.find_element_by_id('ctl00_CPH1_cmbClasses_DropDown')
for option in select.find_element_by_name('CELL PHONE'):
    if option.text in labels:
        option.click()

这是我的第一次尝试(相同代码的多次迭代),结果是 Python 没有列出任何错误,但没有选择我想要的选项,所以按照这里的建议,我这样做了:

selectDropDownList = browser.find_element_by_id("ctl00_CPH1_cmbClasses_DropDown > option[value='CELL PHONE']").click()

这就是结果:

回溯(最近一次调用最后一次): 文件“C:\Users\AMSUser\AppData\Local\Programs\Python\Python35-32\Scripts\Add Asset.py”,第 77 行,位于 selectDropDownList = browser.find_element_by_id("ctl00_CPH1_cmbClasses_DropDown > option[value='CELL PHONE']").click() 文件“C:\Users\AMSUser\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\remote\webdriver.py”,第 269 行,在 find_element_by_id 中 返回 self.find_element(by=By.ID, value=id_) 文件“C:\Users\AMSUser\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\remote\webdriver.py”,第 752 行,在 find_element 中 '值': 值})['值'] 文件“C:\Users\AMSUser\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\remote\webdriver.py”,第 236 行,执行中 self.error_handler.check_response(响应) 文件“C:\Users\AMSUser\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py”,第 192 行,在 check_response 中 引发异常类(消息、屏幕、堆栈跟踪) selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素:{“method”:“id”,“selector”:“ctl00_CPH1_cmbClasses_DropDown > option [value ='CELL PHONE']”} (会话信息:chrome=52.0.2743.116) (驱动程序信息:chromedriver=2.23.409699 (49b0fa931cda1caad0ae15b7d1b68004acd05129),platform=Windows NT 10.0.10586 x86_64)

我继续前行,这是我最后的尝试:

Select(browser.find_element_by_id('ctl00_CPH1_cmbClasses_DropDown')).select_by_value('CELL PHONES')

结果是:

回溯(最近一次调用最后一次): 文件“C:\Users\AMSUser\AppData\Local\Programs\Python\Python35-32\Scripts\Add Asset.py”,第 78 行,位于 Select(browser.find_element_by_id('ctl00_CPH1_cmbClasses_DropDown')).select_by_value('手机') 文件“C:\Users\AMSUser\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\support\select.py”,第 39 行,位于initwebelement.tag_name) selenium.common.exceptions.UnexpectedTagNameException:消息:选择仅适用于元素,不适用于


经过一些修改和这里发布的每个人的很好的建议,这是对我有用的解决方案:

dropArrow = browser.find_element_by_id('ctl00_CPH1_cmbClasses_Arrow') 
dropArrow.click() 
time.sleep(1) 
dropdown1 = browser.find_element_by_xpath('//*[@id="ctl00_CPH1_cmbClasses_DropDown"]/div/ul/li[.="CELL PHONES"]') 
dropdown1.click()

对所发生的事情进行简短的解释,我的第一个问题是列表不可见,通过单击下拉菜单解决了这个问题:

dropArrow = browser.find_element_by_id('ctl00_CPH1_cmbClasses_Arrow') 
dropArrow.click()

之后,我遇到了一个问题,即使我有下拉列表,它仍然说它不可见;我通过让脚本等待一秒钟来解决这个问题,以便他可以通过以下方式注册选项:

time.sleep(1)

最后我选择了该项目:

dropdown1 = browser.find_element_by_xpath('//*[@id="ctl00_CPH1_cmbClasses_DropDown"]/div/ul/li[.="CELL PHONES"]') 
dropdown1.click()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Selenium 和 Python 选择带有
标签的组合框选项 的相关文章

  • 如何使用 lstm 执行多类多输出分类

    I have multiclass multioutput classification see https scikit learn org stable modules multiclass html https scikit lear
  • Python ImageTk.PhotoImage 使用 alpha 通道缓慢加载 png

    我编写了一个小程序来加载和显示图像 一切正常 直到我到达 示例中的 png 文件 shade png 显示这张小图片需要七七秒 PhotoImage 是否有错误或者我错过了一些 范围 这是我的示例代码 from PIL import Ima
  • 使用 matplotlib 在图像数据之上对线网格进行像素精确定位

    我试图在 python 库 matplotlib 显示的图像网格顶部精确地覆盖 1 像素宽线的网格 不幸的是 我似乎无法对结果进行足够精细的控制 以实现线网格与数据网格的正确对齐 如下面的代码所示 结果似乎总是很接近 但并不完全正确 我尝试
  • 使用 Flask 从 Jinja 模板中的 settings.py 文件获取变量

    假设我有 settings py 文件 其中包含一堆常量 将来可能会更多 如何访问 Jinja 模板中的这些变量 Flask 会自动将您的应用程序的配置包含在标准上下文 http flask pocoo org docs templatin
  • swig char ** 作为指向 char * 的指针

    我在使用 swig 和 char 作为指向变量 char 的指针时遇到问题 而不是作为 char 的列表 我找不到将指针包装到 char 的方法 目的是将连接的结果写入指针引用的 char 中 以下是我的代码 文件指针 cpp includ
  • Plotly - 不同颜色的表面

    我正在尝试在 Plotly for Python 中绘制多个曲面 每个曲面具有不同的颜色 具体来说 表面显示了在相空间中不同点采取行动的预测奖励函数 由于我在每个点都有多个可能的操作 因此每个点都是不同的表面 我想对每个表面进行独特的着色
  • Pandas Dataframe.to_csv 小数=',' 不起作用

    在 Python 中 我正在将 Pandas Dataframe 写入 csv 文件 并希望将小数分隔符更改为逗号 像这样 results to csv D Data Kaeashi BigData ProcessMining Voorbe
  • 如何让MagicMock返回多个值

    我想模拟一个图书馆 matplotlib对于它的价值 并且遇到一个问题 当调用模拟并期望返回元组时 它会失败 有一个更好的方法吗 Python 3 7 2 default Jan 13 2019 12 50 15 Clang 10 0 0
  • 如何在 PySide/PyQt 中制作一个位于屏幕中央的小部件?

    这段代码有效 但我想知道是否有更简单的方法 def center self qr self frameGeometry cp gui QDesktopWidget availableGeometry center qr moveCenter
  • 您能否从函数、args 和 kwargs 确定变量将如何分配?

    我有一些样板逻辑 我想包装几个具有相同可选关键字的函数 现在看起来像下面的代码 但是 这仅处理 opt key 作为关键字传递的情况 而不是按位置传递 解决这个问题的一种方法是了解如何解决参数分配 是否有一些元函数接受函数 args 和 k
  • 如何使用 Python Flask-Security 使用 bcrypt 加密密码?

    我正在尝试使用 Flask Security 文档中的标准基本示例 并使其正常工作 除了密码以明文形式存储之外 我知道这一行 user datastore create user email email protected cdn cgi
  • 在 PyQt 中使用 Windows 7 任务栏功能

    我正在寻找有关将一些新的 Windows 7 任务栏功能集成到我的 PyQt 应用程序中的信息 具体来说 如果已经存在使用新进度指示器的可能性 see here http www petri co il wp content uploads
  • Django 中同一个模型的多个多对多关系

    给定以下具有两个多对多关系的模型 class Child models Model name models CharField max length 80 class Foo models Model bar models ManyToMa
  • 导入pytorch时,未安装microsoft Visual C++ Redistributable

    我在一台带有 GPU 的 Windows 机器上工作 我已经在 conda 环境中安装了 pytorch conda install pytorch torchvision cudatoolkit 10 1 c pytorch 然后我运行
  • Python 中的“finally”总是执行吗?

    对于Python中任何可能的try finally块 是否保证finally块总是会被执行吗 例如 假设我在except block try 1 0 except ZeroDivisionError return finally print
  • 纯Python库读写jpeg格式

    伙计们 我正在寻找 jpeg 写入 阅读会很好 但不是必需的 库的纯 python 实现 我只在以下位置创建了 TonyJPEG 库端口 http mail python org pipermail image sig 2004 Novem
  • 使用 PyCharm 分析 Django

    即使在开发环境中 我的应用程序也相当慢 所以我想找出是什么导致它变慢 以便我可以尝试修复它 我了解调试工具栏 根据它的报告 数据库查询和下载的源都不是问题 所以它一定是业务逻辑 但是 我无法使用 Django 服务器运行 PyCharm 分
  • 从 s3 获取 ogg 轨道的长度而不下载整个文件

    如何在不下载整个文件的情况下获取 ogg 文件的播放长度 我知道这是可能的 因为 HTML5 标签和 VLC 都可以在加载 URL 后立即显示整个播放长度 而无需下载整个文件 有标题或我可以阅读的内容吗 也许甚至是比特率 我可以将其除以文件
  • 媒体文件上的 404 - Django

    昨晚我将项目上传到 pythonanywhere com 我想在那里测试我的项目生产设置 在我允许的模型之一中用户上传JPG 团队徽标 上传过程运行良好 文件位于我的 MEDIA ROOT 中 问题是 当我尝试在模板中访问它 以将其显示在页
  • 每次 apache 重新启动时,flask-login 会话都会被破坏

    我正在使用烧瓶登录https github com maxcountryman flask login https github com maxcountryman flask login和领域记住登录用户 http packages py

随机推荐

  • 如何在iOS Reachability中检测网络信号强度

    我正在 iOS 中创建一个新的旅行应用程序 该应用程序高度依赖于地图 并且将包含两个地图 当用户有较强的网络信号时 我的第一个地图将起作用 Apple 地图 我的第二张地图将在没有任何网络或信号非常低时使用 离线 地图框 为什么一个应用程序
  • 处理上传的文本文件后在 Google 云端硬盘中创建新文档

    我成功地将文本文件上传到谷歌云端硬盘 并且编写了一种方法 可以成功地将文本翻译为猪拉丁语 现在我尝试在 Google Drive 中创建一个新文档来输出翻译后的文本 但是 我总是收到消息 发生错误 当我检查我的云端硬盘时 我只有原始上传的文
  • AccountManager:如何让用户使用对话框选择帐户

    在 AccountManager 教程中记住您的用户 建议 如果有多个Account在数组中 你应该呈现一个 对话框要求用户选择一个 最好的方法是什么 我心中有一个解决方案 但如果社区中有其他好的示例 那么这似乎是一种可以由其他人共享和轻松
  • 为什么 Android Studio 3.0.0 在 APK 上设置 FLAG_TEST_ONLY?

    我已经通过 3 0 0 rcX 来自 Canary 渠道 到达 Android Studio 3 0 0 来自稳定渠道 当我启动一个全新的应用程序并构建它时 以下代码 应用程序内部 显示设置了 FLAG TEST ONLY 标志 Log e
  • Python 中 Pivot 和 Transpose 的组合

    我正在做一些文本分析 并且有一个看起来像这样的数据 TABLE 1 C1 C2 C3 A1 TEXT1 ANOTHER TEXT1 A2 TEXT1 ANOTHER TEXT1 B1 TEXT2 ANOTHER TEXT1 B2 TEXT2
  • 从多个 csv 文件中删除标题

    我有多个csv每天来自不同服务器的文件 这些文件很大 超过 200 MB 我必须删除所有这些的标题csv文件 并使用批处理文件将它们替换为所需的列标题 下面的代码可以很好地仅从一个文件中删除列标题 echo off set csv mycs
  • 获取经过的时间跨度的年、月、日 (DateTime)

    如何将日期时间选择器值中的年龄显示为年 月 日 例如 Datetimepicker value 1 11 2014 Today 1 12 2015 最终结果将是 1 年 0 个月 1 天 S 但得到这个结果不仅仅是减去DateTime Ye
  • void() 表达式的目的是什么?

    您不能声明void多变的 void fn void a ill formed 但这编译 void fn void a void object 什么是void 意思是 它有什么用 为什么是void a 格式不正确 同时void OK void
  • 从 ng-click 获取原始元素

    我的视图中有一个项目列表ng click附在他们身上 ul li img src team logoSmall alt title li ul 我正在处理点击事件foo在我的指令中起作用 传递 event作为对已单击对象的引用 但我得到了对
  • 参数数量无效:绑定变量的数量与令牌的数量不匹配 - php 错误

    运行以下代码时 我基本上收到以下错误 无法运行查询 SQLSTATE HY093 参数数量无效 绑定变量的数量与令牌数量不匹配 我是 php 新手 不确定为什么会收到此错误 我过去曾将这段代码用于 INSERT 而不是 UPDATE 语句
  • 如何垂直对齐 HTML 中的元素

    我有一个按钮 旁边有一些文字 就像这样 Button Text 我想让文本与按钮的中心垂直对齐 我应该如何在 CSS 中做到这一点 这是我的尝试 http jsbin com oduma4 4 我发现这种方法有两个问题 文本在 IE 6 中
  • 使用PHP PDO的数据库抽象类设计

    我正在设计一个网络应用程序 实际上 这是一种爱好 我正在尝试自学设计 还有什么比这样做更好的方法 无论如何 我正在考虑如何处理我的数据库 我很满意PDO 我正在考虑在我的抽象类中利用 PDO 我正在考虑创建一个单例 以便只有一个数据库连接
  • 如何读取系统的输出('ls')?

    我正在用 c 代码做一些文件 IO 我的文件中有一个特定的模式 我可以通过 shell 命令验证这一点cat abc txt grep abc wc l 当我使用执行相同的命令时System 它给出了正确的输出 但我不知道如何将其输出放入变
  • Google 脚本 - 根据回复将新提交的内容移至另一张表格

    我正在尝试创建一个脚本 该脚本将采用新的表单响应并根据提交的信息将其移动到另一张表 例如 假设表单有两个答案选项 A B 电子表格有三张表 表单回复 工作表 A 工作表 B 如果有人提交表单并选择 A 我需要将该新行从 表单回复 移至 工作
  • 为什么要在构造函数中初始化成员变量?

    当我第一次开始使用面向对象的编程语言时 我被教导了以下规则 在类中声明字段时 先不要初始化它 在构造函数中执行此操作 C 中的示例 public class Test private List
  • 多种场景的if语句

    我正在努力完成这个 if 语句 必须有一种更简单的方法来完成所有组合 因为这不是一个好的做法 if one true two true three true else if one true two true three true 我想知道
  • 使用代码或脚本(查询)启用到 sql server express 已安装数据库的 tcp\ip 远程连接

    我正在使用我的应用程序部署 sql express 我希望该数据库引擎接受远程连接 我知道如何通过启动 sql server 配置管理器 启用 tcp ip 连接 指定端口等来配置该手册 我想知道是否可以从命令行执行相同的操作 或者也许我必
  • PhantomJS 使用基本身份验证返回 null 进行评估

    我正在尝试在具有基本始终身份验证的页面上使用 PhantomJS 例如此页面 http alexturpin net auth test rosebud 使用以下代码 var webpage require webpage page web
  • 由于 iOS 10 中错误的随机数计数,HTTP 摘要身份验证失败

    自 iOS 10 起 HTTP 摘要身份验证不再在我们的应用程序中起作用 因为授权中的随机数计数错误 由 NSURLSession 生成的摘要标头 相同的代码在 iOS 9 中有效 但在 iOS 10 中无法验证 使用 NSURLReque
  • 使用 Selenium 和 Python 选择带有

    我一直在尝试自动化一些非常无聊的东西 因为我一直在犯错误 我想将它们减少到尽可能接近零 本质上 我得到了必须通过以下方式输入到我们系统中的资产 一个人经历了一个可怕的过程 这是我现在的问题 我的目标是在下拉列表 ctl00 CPH1 cmb