在 Python 中使用 Selenium 提交表单

2024-04-25

我需要从这些超链接背后抓取一些数据本网站 http://www.echemportal.org/echemportal/propertysearch/treeselect_input.action?queryID=PROQ3h3n。然而,这些超链接是javascript function calls,稍后提交form using post方法。经过一番搜索,selenium似乎是一个候选人。所以我的问题是,我应该如何正确设置输入标签的值并提交不提交按钮的表单。

from selenium import webdriver

url = "http://www.echemportal.org/echemportal/propertysearch/treeselect_input.action?queryID=PROQ3h3n"
driver = webdriver.Firefox()
driver.get(url)
treePath_tag = driver.find_element_by_name("treePath")

在提交表单之前,我需要为标签赋值<input>。但是,我收到了一个错误

消息:元素当前不可见,因此可能无法交互 和

treePath_tag.send_keys('/TR.SE00.00/QU.SE.DATA_ENV/QU.SE.ENV_ENVIRONMENT_DATA/QU.SE.EN_MONITORING')

如果上述正确,我想以这种方式提交表格。这是对的吗?

selenium.find_element_by_name("add_form").submit()

以下是网页来源。

JavaScript 函数

<script type="text/javascript">
    function AddBlock(path){
        document.add_form.treePath.value=path;
        document.add_form.submit();
    }
</script>

表单“add_form”

<form id="addblock_input" name="add_form" action="/echemportal/propertysearch/addblock_input.action" method="post" style="display:none;">
<table class="wwFormTable" style="display:none;"><tr style="display:none;">
  <td colspan="2">
<input type="hidden" name="queryID" value="PROQ3h1w" id="addblock_input_queryID"/>  </td>
</tr>
<tr style="display:none;">
  <td colspan="2">
<input type="hidden" name="treePath" value="" id="addblock_input_treePath"/>  </td>
</tr>
</table></form>

div 与 javascript 调用

<div id="querytree">
    <h1>Property Search</h1>
    <h2>Select Query Block Type</h2>
    <p>Select a section for which to define query criteria.</p>
    <div class="queryblocktools"><a href="javascript:document.load_form.submit();"><img style="vertical-align:top;" alt="Load" src="/echemportal/etc/img/load.gif"/>&nbsp;Load Query</a></div>
    <ul class="listexpander">   
    <li>Physical and chemical properties<ul>
        <li><a href="javascript:AddBlock('/TR.SE00.00/QU.SE.DATA_PHYS/QU.SE.PC_MELTING');">Melting point/freezing point</a></li>
        <li><a href="javascript:AddBlock('/TR.SE00.00/QU.SE.DATA_PHYS/QU.SE.PC_BOILING');">Boiling point</a></li>
    </ul>
</div>

您正在尝试设置值hidden输入在页面上不可见,这就是发生错误的原因。如果你想设置值hidden现场尝试使用execute_script如下 :-

treePath_tag = driver.find_element_by_name("treePath")
driver.execute_script('arguments[0].value = arguments[1]', treePath_tag, '/TR.SE00.00/QU.SE.DATA_ENV/QU.SE.ENV_ENVIRONMENT_DATA/QU.SE.EN_MONITORING')

设定值开启后hidden您可以使用以下字段submit表格 :-

selenium.find_element_by_name("add_form").submit()

希望能帮助到你..:)

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

在 Python 中使用 Selenium 提交表单 的相关文章

随机推荐

  • 从 C* 表中获取不同的分区键

    cqlsh 不允许嵌套查询 因此我无法将所选数据导出到 csv 我正在尝试使用以下命令从 cassandra 导出选定的数据 大约 200 000 行 单列 echo SELECT distinct imei FROM listener s
  • 如何在nodejs sdk v12中生成带有SAS签名的azure blob url?

    以前 在旧版 sdk 中 如 v2 您可以生成一个 sas url blob 的签名可共享 url 如下所示 var azure require azure storage var blobService azure createBlobS
  • 将架构名称与 SQL Server 和 ServiceStack.OrmLite 一起使用

    有人知道如何将正确的 Alias 属性应用于具有架构名称的查询表吗 我有一张桌子叫accounts register 我尝试过使用 Alias accounts register 作为 Register 类的类装饰器属性 但这不起作用 如果
  • 在 TWS API 中请求 nextOrderID 不起作用

    我正在尝试使用 python 通过 TWS API 下订单 我的问题是获取下一个有效的订单 ID 这是我正在使用的 from ibapi client import EClient from ibapi wrapper import EWr
  • 使用MongoDB时需要JPA吗?

    我对这两者很困惑 我正在看戏 java框架 它说它使用JPA 我正在考虑使用 Play 第一次在项目中使用 MongoDB 我以前使用过JPA 但当时我用它来写入关系数据库 mysql MongoDB 不是关系数据库 所以如果我想将它与 P
  • SPMD 与 Parfor

    我对 matlab 中的并行计算很陌生 我有一个创建分类器 SVM 的函数 我想用几个数据集来测试它 我有一个 2 核工作站 所以我想并行运行测试 有人可以向我解释一下以下之间的区别 dataset array dataset1 datas
  • 在 Visual Studio 数据库项目/SQL Server 中创建默认数据

    有没有办法在VS 2010的数据库项目中使用数据生成计划来创建一组默认数据 或者我是否找错了树 即数据生成计划是否最适合创建虚拟示例数据 我们有大量需要为每个数据库部署创建的数据 默认设置 默认用户等 如果有工具来帮助我们解决这个问题就好了
  • 在列表中查找最新版本

    我可以在文件夹中搜索所有版本日志行 但我试图选择列表中的最新版本 但我不知道如何选择 因为列表的元素包含字符和数字 下面是我的代码 用于查找和创建一个名为matched lines的列表 其中包含所有说明日志版本号的行 我希望从创建的列表中
  • 带有附加事件的 EventToCommand

    我在附加事件上使用Validation Error的文本框 验证错误 http msdn microsoft com en us library system windows controls validation error 28v vs
  • 条件绑定

    我是 JavaFx 新手 我正在创建一个应用程序 用户必须填写一些表单 并且我想使用绑定 预先验证 它们 简单的事情 比如所有元素都不能为空 或者其中一些元素只能包含数字 这是我到目前为止所拥有的 saveBtn disableProper
  • dotenv-webpack 在 webpack.config.js 中使用环境变量

    My env设置如下 SECRET KEY mysecretkey123 My webpack config js设置如下 const Dotenv require dotenv webpack module exports proxy a
  • 导入时记录器命名与日志记录配置之间不兼容

    我正在通过读取文件并使用来在 main py 中设置 Python 日志记录文件配置 http docs python org library logging config html选项 我希望能够在测试和实时日志记录配置之间切换 因此我想
  • 用于浮点和整数验证的 JavaScript

    我尝试创建一个 javascript 函数validate integer values从文本框 验证它的最佳方法是什么 以便仅integer and float值可以接受吗 数字验证所需的 javascript 函数 remove whi
  • 在 T-SQL 中处理来自 CLR 存储过程的多个结果

    我有一些用 C 编写的复杂算法作为 CLR 存储过程 过程不是确定性的 取决于当前时间 程序的结果是两个表 我没有找到任何解决方案如何处理 T SQL 中存储过程的多重结果 此过程的性能是关键 过程每约 2 秒调用一次 我发现更新表的最快方
  • 使用 Entity Framework 4 和 Code-First 从数据库中排除字段/属性

    我想知道有没有办法从数据库中排除某些字段 例如 public class Employee public int Id get set public string Name get set public string FatherName
  • Cypress:信用卡支付的自动测试[重复]

    这个问题在这里已经有答案了 我正在做信用卡付款的自动测试 不幸的是 测试在 到期日期 项中失败了 my code cy getWithinIframe name cardnumber type 4242424242424242 cy get
  • MySQL 搜索“$”(美元符号)失败?

    被要求在大量文本中查找美元价值 可以对美元符号进行搜索吗 如果是这样 任何示例 指导将不胜感激 当前查询 select from concept where concept description like 您可能想使用LOCATE查看列值
  • 在Spring+Wicket中上传文件

    要使 Java Web 应用程序 使用 Spring Wicket 开发 接受客户端文件上传到服务器上的特定目录 需要执行哪些步骤 在谷歌搜索这个问题的答案时 我看到建议 WEB INF some directory 应该用作上传位置 这是
  • 将嵌套文件夹和文件名读取为嵌套列表

    我试图将已定义目录的所有文件夹和文件名读取到一个嵌套列表中 该列表与顶层文件夹的数量一样长 然后每个列表元素的元素数量与子目录中的元素数量一样多 如果它是一个文件夹 等等 直到只有文件而没有更多文件夹的级别 我的用例是我的 iTunes M
  • 在 Python 中使用 Selenium 提交表单

    我需要从这些超链接背后抓取一些数据本网站 http www echemportal org echemportal propertysearch treeselect input action queryID PROQ3h3n 然而 这些超