因为工作原因,需要将xls文件的数据录入到网上。因为数据量太多,而且以后时不时还需要用上,Ctrl+C,Ctrl+V不是长久之计。所以萌生一个想法,写一个工具,用于把xls文件的数据录入到网站上。

笔者这段时间才刚刚开始了解HTML、JavaScript,很多东西都是刚刚初步有点认识。写的比较详细,如果你跟我一样,相信文章对你很有用。如果是老鸟,那就跳过吧~

读写xls部分省略。

要实现填写表单,需要:

一、配置chromedriver

1)先查看自身Chrome浏览器的版本号,再到chromedriver下载网站找到与自身Chrome浏览器匹配的chromedriver版本下载使用。笔者下载的是win32版本,详细步骤如图:

2)下载后解压,并把chromedriver.exe拷贝到Chrome浏览器所在目录,详细步骤如图所示:

3)为了方便,我们也可以把Chrome路径添加到系统环境变量中:

到此,chromedriver就配置完毕啦。

二、Python安装selenium库

使用如下命令即可完成安装:

pip3 install selenium

如图:

三、测试selenium库使用

编辑如下代码,实现打开百度页面并搜索“cnblogs”的简单功能(后续讲解代码中id的来源):

importosfrom selenium importwebdriverdeftest():

driver= webdriver.Chrome("chromedriver.exe") #chromedriver所在路径

driver.get(r"http://www.baidu.com")

driver.find_element_by_id("kw").send_keys("cnblogs") #输入cnblogs

driver.find_element_by_id("su").click() #点击“百度一下”搜索

if __name__ == "__main__":

test()

os.system("pause")

测试完成,接下来就可以使用了。

四、selenium的使用

selenium提供了多种定位网页元素的方法,如通过id、name、classname、xpath等多种方式。详细请参考:http://www.testclass.net/selenium_python/find-element/,这里就不一一赘述了。

到此,我们就已经几乎做好填写表单的所有准备啦,最后一步,就是定位我们的目标网站的具体元素并实现填表了。

五、定位网页元素

chrome开发者工具为我们提供了非常遍历的方式定位网页元素。我们以定位百度首页的文本输入框以及“百度一下”按钮为例:

1、打开Chrome浏览器,按F12打开开发者工具。点击进入“Elements”板块,我们就能看到网页完整的HTML代码。如图:

2.点击开发者工具左上角的小按钮来定位页面元素,我们定位文本输入框找到输入框对应的元素id,当然,我们也可以通过其他值来定位,如图:

接下来我们定位百度按钮:

从这里我们看到,文本输入框的id是“kw”,百度一下按钮的id是su,有了如上信息,我们就可以写出第三大点的代码了。

六、实践中遇到的一些问题:处理批量填表时抛出异常:selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted

对于批量数据的填写,常常需要我们点击按钮增加填写区域。如下图示例

通过Chrome开发者工具,我们定位到该按钮元素,三个按钮属于同一个类,class=“addbutton”:

假设我们已经定位到改行元素row_element,接下来我们就开始实现代码吧:

1)第一版代码

我们通过row_element定位到第二个addbutton按钮并点击,代码如下:

通过以上方式,我们实现了自动添加一行填表区域的逻辑。

但是事与愿违,当我用这种方式批量填表时,填表途中抛出了异常:

selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element is not clickable at point (737, 833). Other element would receive the click:

(Session info: chrome=77.0.3865.90)

大概意思就是被其他元素拦截了。只能再找新的办法。

各种查资料,结果就出现了第二版代码。

2)第二版代码

将第一版代码稍作修改,使用JavaScript脚本执行,如图:

print("添加一条填表区...")

add_buttons= row_element.find_elements_by_class_name('addbutton')#add_buttons[1].click()

driver.execute_script("arguments[0].click()", add_buttons[1])

View Code

经过修改,再也没有出现刚刚的报错了~

3)第三版代码,进一步改进

随着自己对JavaScript和HTLM的进一步熟悉,重新看了一下发现自己绕了个大弯,其实完全有更简单的方法实现。

笔者原本的逻辑,是通过各种方式定位到了该行元素,再定位到具体按钮,进而使用click()实现。

但是我们回头看一下HTLM源码,如下:

我们可以看到,其实click事件就是响应了一个postInsert()函数!

我们直接使用driver.execute_script()调用postInsert()函数就可以了,完全不需要定位元素位置呀,不!需要!定位!呀!呀!

postInsert()函数接受一个整型值,代表在第几行的后面插入新行。对代码稍作修改,就有了第三版代码,一行就搞定了:

至此,工具就写完了,笔者这几天是从0基础了解HTML、JavaScript开始,一步一步加深认识,并把工具写好,碰到的坑,数不尽数。但是收获也很大,继续加油吧!

python网页自动填写_Windows下使用python3 + selenium实现网页自动填表功能相关推荐

  1. python自动填表格_Windows下使用python3 + selenium实现网页自动填表功能

    因为工作原因,需要将xls文件的数据录入到网上.因为数据量太多,而且以后时不时还需要用上,Ctrl+C,Ctrl+V不是长久之计.所以萌生一个想法,写一个工具,用于把xls文件的数据录入到网站上. 笔 ...

  2. python 打开网页 并填表单_Windows下使用python3 + selenium.webdriver功能实现自动填写网页表单功能...

    因为工作原因,需要将xls文件的数据录入到网上.因为数据量太多,而且以后时不时还需要用上,Ctrl+C,Ctrl+V不是长久之计.所有写了一个小工具,用于把xls文件的数据录入到网站上. 读写xls部 ...

  3. Windows下使用python3 + selenium实现网页自动填表功能

    本文由博主(SunboyL)原创,转载请注明出处:https://www.cnblogs.com/SunboyL/p/11563345.html 因为工作原因,需要将xls文件的数据录入到网上.因为数 ...

  4. Qt QWebview调用JS,实现QQ邮箱自动填写输入框,模拟鼠标点击网页按钮!!

    Qt QWebview调用JS,实现QQ邮箱自动填写输入框,模拟鼠标点击网页按钮!! QWebview调用JS,自动填写用户名和密码,并且JS模拟鼠标点击网页按钮. 下载地址:https://down ...

  5. python3.6.2下载教程_Windows下升级Python3.7.7后(原Python3.6.2版本)如何切换Python版本|python基础教程|python入门|python教程...

    https://www.xin3721.com/eschool/pythonxin3721/ 笔者:风起怨江南 出处:https://www.cnblogs.com/mengjinxiang 笔者原创 ...

  6. python 发布到linux_Linux(CentOS)下的Python3部署流程

    ## linux (centos) 下安装Python3环境的流程,该方法不会删除自带的Python2环境. 本文使用环境为 Centos 7.X, 自带Python2.X, 为防止覆盖Python2 ...

  7. deepin部署python开发环境_deepin系统下部署Python3.5的开发及运行环境

    deepin系统下部署Python3.5的开发及运行环境 1 概述 本人小白一枚,由于最近要学习python接口自动化测试,所以记录一下相关学习经过及经验,希望对跟我一样小白的朋友可以有所帮助. 2 ...

  8. python读取grib文件_Windows下Python读取GRIB数据

    之前写了一篇<基于Python的GRIB数据可视化>的文章,好多博友在评论里问我Windows系统下如何读取GRIB数据,在这里我做一下说明. 一.在Windows下Python为什么无法 ...

  9. linux火狐打不开网页视频下载,win10下火狐浏览器无法打开网页视频的解决方法...

    虽然Win10系统自带了Edge浏览器,但是很多用户仍然更喜欢使用能够自定义插件的火狐浏览器.不过,最近有用户在Win10系统中使用火狐浏览器,发现突然打不开网页视频了,其他浏览器可以打开,这是怎么回 ...

最新文章

  1. 各类机器学习问题的最优结果合集!附论文及实现地址索引
  2. python正则查找_python正则查找
  3. python关闭浏览器删除session_Django操作session 的方法
  4. 2018年9月杭州云栖大会Workshop - 基于日志的安全分析实战
  5. 最优化学习笔记(四)——最速下降法
  6. MTK驱动(84)---GPS 配置
  7. 全球开发者调查:JavaScript 成最爱,还最喜欢用 React
  8. 几何学五大公理_【欧几里德的平面几何五大公理是什么?】作业帮
  9. 阿里云助贫困大学生用技能点亮人生
  10. 这一年,这些书:2021年读书笔记
  11. VAssistX 脚本
  12. 弹性地基梁板法计算原理_地基计算模型
  13. 安装python第三方模块包时,报错 error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C
  14. Hit Refresh读书摘要
  15. 智能生活 App SDK 开发入门教程
  16. Bazinga HDU - 5510
  17. 著名的NP问题:TSP问题(Traveling Salesman Problem)
  18. “跨次元”检测模型hold住各种画风,真人赛博,在线Demo可玩
  19. 小猿圈解析linxu安装方式
  20. VB打开工程时出现不能加载MSCOMCTL.OCX的解决方法

热门文章

  1. ubuntu安装zlib
  2. 恢复系统自带的office软件
  3. ug12在win8计算机名错,Win8安装UG9.0时出错提示“UGII_TMP_DIR 被设为一个有无效(非ASCII)字符的目录”怎么办...
  4. 烤仔观察 | 从蓝海到红海,科技巨头们和他们元宇宙世界
  5. 大多数企业数字化转型的真正目的其实只是为了能多裁点人
  6. Excel函数公式大全—SUMIF/SUMIFS函数
  7. Polhemus PATRIOT 电磁位置跟踪系统
  8. vs 开发 win32 程序,调出控制台那个黑乎乎的窗口,方便调试
  9. 有意思,原来SQL中的NULL是这么回事儿
  10. java定义一个eat方法,java基础5实战开发Day2/方法/2020-04-26