Selenium webdriver python 无法上传文件 - send_keys 抛出 ElementNotInteractable

2023-12-22

所以我尝试使用 selenium webbrowser send_keys 上传文件,但它不起作用。 请帮忙。

from selenium import webdriver
import  time

driver = webdriver.Chrome(executable_path="../drivers/chromedriver")
driver.implicitly_wait(5)
driver.maximize_window()

driver.get("https://postimages.org/nl/")

element = driver.find_element_by_xpath("//*[@id='uploadFile']")
element.send_keys("Demo/test.png")

错误是:

回溯(最近一次调用最后一次): 文件“/home/kuba/PycharmProjects/Test/Demo/UploadTest.py”,第 12 行,位于 element.send_keys("演示/test.png") 文件“/home/kuba/PycharmProjects/Test/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webelement.py”,第 477 行,在 send_keys 中 self._execute(Command.SEND_KEYS_TO_ELEMENT, 文件“/home/kuba/PycharmProjects/Test/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webelement.py”,第 633 行,在 _execute 中 返回 self._parent.execute(命令,参数) 文件“/home/kuba/PycharmProjects/Test/venv/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py”,第 321 行,执行中 self.error_handler.check_response(响应) 文件“/home/kuba/PycharmProjects/Test/venv/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py”,第 242 行,在 check_response 中 引发异常类(消息、屏幕、堆栈跟踪)

selenium.common.exceptions.ElementNotInteractableException:消息:元素不可交互 (会话信息:chrome=84.0.4147.89)


问题的根本原因是网站 (postimages.org) 上的“上传文件”链接不是输入字段。

Selenium Webdriver for Python 允许通过使用以下方式上传文件发送密钥仅当上传按钮是输入字段时才使用此方法。

预期(为了使 send_keys 工作)

<input id="uploadFile" type="file">

实际找到了(send_keys不起作用的原因)

<span id="uploadFile" class="btn btn-lg dz-clickable" >

如何解决这个问题?

send_keys 的方法不适用于该网站,因为它没有 webdriver 所需的输入元素。因此,需要使用替代方法来达到此目的。

网站 -https://postimages.org/nl/ https://postimages.org/nl/支持 用于上传图像的“复制+粘贴”功能。

这可以在 python 中完成,如下所示:

Step 1:将图像复制到系统剪贴板

Step 2:使用Webdriver点击网页。

Step 3:使用 webdriver 将“CTRL + V”发送到网页。 验证图像是否已上传。

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

Selenium webdriver python 无法上传文件 - send_keys 抛出 ElementNotInteractable 的相关文章

  • InterfaceError:连接已关闭(使用 django + celery + Scrapy)

    当我在 Celery 任务中使用 Scrapy 解析函数 有时可能需要 10 分钟 时 我得到了这个信息 我用 姜戈 1 6 5 django celery 3 1 16 芹菜 3 1 16 psycopg2 2 5 5 我也使用了psyc
  • DreamPie 不适用于 Python 3.2

    我最喜欢的 Python shell 是DreamPie http dreampie sourceforge net 我想将它与 Python 3 2 一起使用 我使用了 添加解释器 DreamPie 应用程序并添加了 Python 3 2
  • pandas 替换多个值

    以下是示例数据框 gt gt gt df pd DataFrame a 1 1 1 2 2 b 11 22 33 44 55 gt gt gt df a b 0 1 11 1 1 22 2 1 33 3 2 44 4 3 55 现在我想根据
  • 如何使用包含代码的“asyncio.sleep()”进行单元测试?

    我在编写 asyncio sleep 包含的单元测试时遇到问题 我要等待实际的睡眠时间吗 I used freezegun到嘲笑时间 当我尝试使用普通可调用对象运行测试时 这个库非常有用 但我找不到运行包含 asyncio sleep 的测
  • 打破嵌套循环[重复]

    这个问题在这里已经有答案了 有没有比抛出异常更简单的方法来打破嵌套循环 在Perl https en wikipedia org wiki Perl 您可以为每个循环指定标签 并且至少继续一个外循环 for x in range 10 fo
  • Spark的distinct()函数是否仅对每个分区中的不同元组进行洗牌

    据我了解 distinct 哈希分区 RDD 来识别唯一键 但它是否针对仅移动每个分区的不同元组进行了优化 想象一个具有以下分区的 RDD 1 2 2 1 4 2 2 1 3 3 5 4 5 5 5 在此 RDD 上的不同键上 所有重复键
  • keras加载模型错误尝试将包含17层的权重文件加载到0层的模型中

    我目前正在使用 keras 开发 vgg16 模型 我用我的一些图层微调 vgg 模型 拟合我的模型 训练 后 我保存我的模型model save name h5 可以毫无问题地保存 但是 当我尝试使用以下命令重新加载模型时load mod
  • NameError:名称“urllib”未定义”

    CODE import networkx as net from urllib request import urlopen def read lj friends g name fetch the friend list from Liv
  • python pandas 中的双端队列

    我正在使用Python的deque 实现一个简单的循环缓冲区 from collections import deque import numpy as np test sequence np array range 100 2 resha
  • python 集合可以包含的值的数量是否有限制?

    我正在尝试使用 python 设置作为 mysql 表中 ids 的过滤器 python集存储了所有要过滤的id 现在大约有30000个 这个数字会随着时间的推移慢慢增长 我担心python集的最大容量 它可以包含的元素数量有限制吗 您最大
  • 使用 OpenPyXL 迭代工作表和单元格,并使用包含的字符串更新单元格[重复]

    这个问题在这里已经有答案了 我想使用 OpenPyXL 来搜索工作簿 但我遇到了一些问题 希望有人可以帮助解决 以下是一些障碍 待办事项 我的工作表和单元格数量未知 我想搜索工作簿并将工作表名称放入数组中 我想循环遍历每个数组项并搜索包含特
  • 循环中断打破tqdm

    下面的简单代码使用tqdm https github com tqdm tqdm在循环迭代时显示进度条 import tqdm for f in tqdm tqdm range 100000000 if f gt 100000000 4 b
  • 如何将 PIL 图像转换为 NumPy 数组?

    如何转换 PILImage来回转换为 NumPy 数组 这样我就可以比 PIL 进行更快的像素级转换PixelAccess允许 我可以通过以下方式将其转换为 NumPy 数组 pic Image open foo jpg pix numpy
  • 在Python中重置生成器对象

    我有一个由多个yield 返回的生成器对象 准备调用该生成器是相当耗时的操作 这就是为什么我想多次重复使用生成器 y FunctionWithYield for x in y print x here must be something t
  • 设置 torch.gather(...) 调用的结果

    我有一个形状为 n x m 的 2D pytorch 张量 我想使用索引列表来索引第二个维度 可以使用 torch gather 完成 然后然后还设置新值到索引的结果 Example data torch tensor 0 1 2 3 4
  • 在 Pandas DataFrame Python 中添加新列[重复]

    这个问题在这里已经有答案了 例如 我在 Pandas 中有数据框 Col1 Col2 A 1 B 2 C 3 现在 如果我想再添加一个名为 Col3 的列 并且该值基于 Col2 式中 如果Col2 gt 1 则Col3为0 否则为1 所以
  • 对输入求 Keras 模型的导数返回全零

    所以我有一个 Keras 模型 我想将模型的梯度应用于其输入 这就是我所做的 import tensorflow as tf from keras models import Sequential from keras layers imp
  • 在python中,如何仅搜索所选子字符串之前的一个单词

    给定文本文件中的长行列表 我只想返回紧邻其前面的子字符串 例如单词狗 描述狗的单词 例如 假设有这些行包含狗 hotdog big dog is dogged dog spy with my dog brown dogs 在这种情况下 期望
  • 如何使用google colab在jupyter笔记本中显示GIF?

    我正在使用 google colab 想嵌入一个 gif 有谁知道如何做到这一点 我正在使用下面的代码 它并没有在笔记本中为 gif 制作动画 我希望笔记本是交互式的 这样人们就可以看到代码的动画效果 而无需运行它 我发现很多方法在 Goo
  • Selenium Standalone Server 和 Java selenium Jar 文件有什么区别

    这可能听起来像个愚蠢的问题 但我想知道 Selenium 独立服务器和 Java selenium Jar 文件之间的区别 我可以使用这两个 jar 文件导入 Webdriver 类 如果 selenium 独立服务器提供了所有必需的 ja

随机推荐

  • 检测 DataTable 上的页面更改

    With 数据表 http datatables net 我可以排序 列出 分页 但我想检测分页何时更改 我已经看到了API http datatables net api但我唯一能做的就是更改页面但没有检测到此更改 您可以使用fnDraw
  • SQL Server 2005/2008:在 Transact-SQL 中的 varbinary(max) 列中插入文件

    是否可以在 Transact SQL 中的 varbinary max 列中插入文件 如果是 我会非常高兴有一个代码片段至少让我知道如何做到这一点 Thanks 就这么简单 一旦您知道了 发现这个格雷格 邓肯的博客 http coolthi
  • 让 Cancan 的 load_and_authorize_resource 在自定义创建操作中工作

    正在尝试设置Cancan在我的应用程序中 并且我的应用程序遇到问题PostsController 简而言之 当Post创建后我希望它与current user所以我的创建操作看起来像这样 class PostsController lt A
  • 工厂方法的命名约定是什么?

    介绍 MacApp Macintosh 应用程序框架 App89 始终声明 将工厂方法定义为 Class 的抽象操作 DoMakeClass 其中 Class 是 Product 类 这句话让我想到了关于工厂方法设计模式的命名约定的问题 期
  • fortran 中的过程 nopass 与普通函数

    因此 在其他语言中 静态方法可以访问静态成员 并且它们的可见性受到类范围的限制 在 Fortran 中 没有静态成员 如果我错了 请纠正我 并且方法名称是全局可访问的 因此我什至不能在不同的类中拥有两个同名的静态方法 我认为 nopass
  • CSS 过渡不适用于 max-height: fit-content

    我正在尝试使用 CSS 为一些可扩展面板设置动画 如下所示 panel transition max height 0 1s ease in out flex 90 max height 26px expanded max height f
  • 网格::右对齐网格项目

    通过使用右侧按钮的网格定位 有人能指出我正确的方向吗 container width 500px border 1px solid red grid display grid grid gap 5px grid auto flow colu
  • 在Python中从键盘读取原始输入

    我正在尝试在 python 中获取键盘的原始输入 我有一个带可编程按键的罗技游戏键盘 但罗技不提供适用于 Linux 的驱动程序 所以我想我可以 尝试 为此编写自己的驱动程序 认为解决方案可能是这样的 with open dev keybo
  • 从源代码访问 Visual Studio 宏?

    Visual Studio 有类似的宏 TargetDirectory OutputPath etc 在我的源代码中 我想指定一个相对路径 用于从比该文件低几级的文件夹中加载文件 TargetDirectory 目前我正在这样做 mLaye
  • 如何在命令行中使用 Emacs 启动不同模式?

    有没有办法使用命令行启动不同的 emacs 模式 例如 是否可以按如下方式运行 emacs emacs org mode to start orgmode emacs python mode to start python mode 此后我
  • Hibernate - 为什么使用多对一来表示一对一?

    我见过人们使用多对一映射来表示一对一关系 我还在 Gavin King 的书和文章中读到过这一点 例如 如果一位客户只能有一个送货地址 并且一个送货地址只能属于一位客户 则映射如下
  • App Store - 帮助回答“缺少合规性”(使用 Expo + Firebase)

    我正在将我的应用程序发布到 App Store 但我对 缺少合规性 步骤有疑问 以下是有关该应用程序的一些信息 I used 世博会 托管工作流程 https docs expo io introduction managed vs bar
  • 在php mysql中插入多个值

    我这里有一个用于更新 php mysql 中的多个值的示例代码 我想知道如何插入多个值
  • 企业代理背后的 Apache

    我正在开发一个 php 应用程序 我正在使用 wamp 并且我在公司代理后面 我在用着cntlm http cntlm sourceforge net 进行身份验证NTLM https en wikipedia org wiki NT LA
  • 如何使用 Diesel 和 SQLite 获取新创建值的 id?

    柴油机的SqliteBackend不执行SupportsReturningClause的特质 所以get result方法不能用于检索新创建的值 还有其他方法可以找出插入行的 id 吗 Python 有一个解决方案 https stacko
  • 如何将 lambda 函数读取为字符串?

    我想在创建它之后读取我作为字符串创建的 lambda 函数 例如 func lambda num1 num2 num1 num2 我想将 func 读为 lambda num1 num2 num1 num2 有没有办法实现这一点 甚至读取
  • C++ iomanip 对齐

    我正在尝试调整我的输出 但由于某种原因我无法让它对齐 我多么想要它 这真的很令人沮丧 标题不会正确对齐 我不知道我是否正确使用 setw include
  • HttpContext.Current 调用背后有多少计算量?

    是不是很贵 我正在开发一个直接渲染到 Response Output 的 HtmlHelper 以节省不必要的字符串创建 我需要在以下选项之间进行选择 and 并从 HttpContext Current Response 获取 textW
  • python GIL 的多线程示例

    我读过很多关于在编写多线程代码时 python GIL 业务有多么 糟糕 的文章 但我从未见过一个例子 有人可以给我一个基本的例子来说明 GIL 在使用线程时何时会导致问题吗 Thanks 多线程的主要原因之一是程序可以利用多个 CPU 和
  • Selenium webdriver python 无法上传文件 - send_keys 抛出 ElementNotInteractable

    所以我尝试使用 selenium webbrowser send keys 上传文件 但它不起作用 请帮忙 from selenium import webdriver import time driver webdriver Chrome