提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
本文用于记录在win11上使用python和selenium网页自动化工具,实现网页自动签到。
提示:以下是本篇文章正文内容,下面案例可供参考
下载安装Python和PyCharm软件。
Python下载地址:https://www.python.org/getit
PyCharm下载地址:https://www.jetbrains.com/zh-cn/pycharm/download/#section=windows
注意:一般pycharm自带selenium包,无需重新下载。
下载完成之后打开cmd,输入python,出现版本号则安装成功(如下图)。

若显示 “'python’ 不是内部或外部命令,也不是可运行的程序或批处理文件。”大概率是因为安装python后没有设置环境变量,设置环境变量的方法如下:鼠标右击‘此电脑’→属性→高级系统设置→环境变量→见下图:
注意:step4是python的安装目录。step5是python的脚本目录,添加后就可以在cmd中直接调用该目录中的工具,例如直接在cmd中调用pip工具如下图:

安装好pycharm后,对pycharm进行的网络设置和python路径配置。
在使用pycharm安装拓展包时,默认从国外服务器下载更新数据,速度慢不稳定经常无法下载更新。这里需要把pycharm的HTTP proxy设置成Auto-detect proxy settings自动检测代理模式。

(注:需要自备梯子)
按下图所示步骤操作,点击step3选择add,点击step4选择python的安装目录。
注:如果找不到python的安装目录,打开cmd输入where python,如下图:

打开pycharm,点击File→settings,如下图:

发现列表内已经有selenium,点击cancel,关闭当前窗口。
如果列表中没有selenium,点击+,进行添加,如下图:

安装成功后,会在窗口底部显示绿色字样。如果安装失败,请查看2.1网络设置。
方法二:打开cmd,使用pip show selenium 指令查看,如下图:
表示selenium已存在,且版本号为4.2.0,关闭当前窗口。
如果没有selenium,可使用 pip install selenium 进行安装,如下图:

安装成功后,会在最后一行显示successfully installed selenium等字样。
如果安装失败,使用pip install selenium -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com指令。
注:由于网络原因,每次使用pip都要输入很长一段指令,可以通过创建pip配置文件解决。
1.打开C盘,C:\Users\Administrator目录下创建pip文件夹,
2.在pip文件夹下新建pip.ini文件,内容为:
[global]
trusted-host=pypi.douban.com
index-url=http://pypi.douban.com/simple/

配置方法引用于 https://blog.csdn.net/zzzzxqa/article/details/107435758
其他常用的镜像源地址:
阿里云:http://mirrors.aliyun.com/pypi/simple/
清华:https://pypi.tuna.tsinghua.edu.cn/simple
selenium可以操控多款浏览器,包括谷歌,火狐等,要用哪个浏览器就装哪个浏览器的驱动。
这里使用Chrome浏览器,查看浏览器版本信息:

打开驱动网站https://registry.npmmirror.com/binary.html?path=chromedriver/,下载和浏览器的版本号对应或者接近的驱动,解压后放入python路径下的Scripts文件夹中。

代码如下:
from selenium import webdriver
import time
# 找到插件的路径,使用它驱动操作
driver = webdriver.Chrome()
# 填入签到网页
driver.get('https://du****.dev/')
# 在username和Password后面输入账号密码
username = "172****@qq.com"
Password = "1234****"
driver.find_element_by_id('email').send_keys(username)
driver.find_element_by_id('passwd').send_keys(Password)
# 登录
driver.find_element_by_xpath('//*[@id="formLogin"]/div[3]/div/div/span/button').click()
#设置Selenium Webdriver的隐式等待,10内。
driver.implicitly_wait(10)
# 签到
driver.find_element_by_xpath('//*[@id="app"]/section/section/main/div/div[2]/div/div/div/div[2]/div[3]/div/div/button[1]').click()
#等待2秒后,自动关闭窗口
time.sleep(2)
driver.close()
Selenium with Python中文翻译文档:https://selenium-python-zh.readthedocs.io/en/latest/
简书自如_大佬写的Selenium WebDriver教程:https://www.jianshu.com/p/1b63c5f3c98e
迈向python的一小步!
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
我有一个在Linux服务器上运行的ruby脚本。它不使用rails或任何东西。它基本上是一个命令行ruby脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg
我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("
我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Pythonconditionalassignmentoperator对于这样一个简单的问题表示歉意,但是谷歌搜索||=并不是很有帮助;)Python中是否有与Ruby和Perl中的||=语句等效的语句?例如:foo="hey"foo||="what"#assignfooifit'sundefined#fooisstill"hey"bar||="yeah"#baris"yeah"另外,类似这样的东西的通用术语是什么?条件分配是我的第一个猜测,但Wikipediapage跟我想的不太一样。
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht
华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o
我想解析一个已经存在的.mid文件,改变它的乐器,例如从“acousticgrandpiano”到“violin”,然后将它保存回去或作为另一个.mid文件。根据我在文档中看到的内容,该乐器通过program_change或patch_change指令进行了更改,但我找不到任何在已经存在的MIDI文件中执行此操作的库.他们似乎都只支持从头开始创建的MIDI文件。 最佳答案 MIDIpackage会为您完成此操作,但具体方法取决于midi文件的原始内容。一个MIDI文件由一个或多个音轨组成,每个音轨是十六个channel中任何一个上的