selenium自动化教务系统登入

通过学习了selenium后,我们可以写一个自动化登录的脚本,就拿登录教务系统为例吧

第一步,依旧确定要用的库

先安装库,命令行输入pip install selenium,具体可参考这篇文章pip安装库遇到的问题_Lorrey_的博客-CSDN博客

接着就可以导入

from selenium import webdriver  #从模块selenium中导入webdriver定义
import time #用来休眠,为了能成功进入页面后再进行下一步 

第二步,要下载浏览器驱动,根据自己的浏览器版本号下载对应的驱动

下载教程参考我的这篇文章chromedriver驱动下载_Lorrey_的博客-CSDN博客

第三步,可以来捋下思路,先获取url

browser.get('https://yaltest.ntvu.edu.cn/http/webvpn652e6e7476752e6564752e636e/new/index.html') #这里以教务系统为例,小伙伴们可以自行更换url

进入页面,右击检查,找到需要的元素,登录需要用到用户名,密码,以及登录按钮

找到页面元素我们可以用id或者xpath来查找 

 

可以通过这里点击页面元素可以快速定位,这里我们可以找到id为username,那就可以这样写代码

elem_user=browser.find_element_by_id('username')

接着通过键入来输入账号send_keys()

#可以新写一句
elem_user.send_keys('你的账号')
#也可以直接在上一句后面加上
elem_user=browser.find_element_by_id('username').send_keys('你的账号') 

运用同样的方法我们可以找到passwd元素 

elem_pass=browser.find_element_by_id('password').send_keys('你的密码')

可是当我们想用同样的办法找到登录按钮的时候,发现并没有发现id

 

这时候可以用另一种办法——xpath

右击·复制·XPATH

 

 那这时候我们的语句也要有些改变了

elem_login=browser.find_element_by_xpath('//*[@id="casLoginForm"]/p[5]/button')
#上面的是by_id,这里是by_xpath

 然后我们要模拟鼠标点击,可以用click()

elem_login.click()
#同样也可以直接加在后面
elem_login=browser.find_element_by_xpath('//*[@id="casLoginForm"]/p[5]/button').click()

这样基本的操作也就实现了,接下来可以进行代码编辑

from selenium import webdriver
import time

browser=webdriver.Chrome('chromedriver.exe')

#登录
browser.get('http://e.ntvu.edu.cn/new/index.html') #这里url可自行更改
#窗口最大化
browser.maximize_window()
#休息3秒,等成功打开页面再进行下一步,以免错误
time.sleep(3)
#由于我的url进去要先点击一个登录按钮才进入账号密码输入页面,具体以你输入的url实际情况为准
first_login=browser.find_element_by_class_name('amp-no-login-zh').click()
time.sleep(3)
#用户名
elem_user=browser.find_element_by_id('username')
#清空输入
elem_user.clear()
#键入用户名
elem_user.send_keys('你的账号')
time.sleep(1)
#密码
elem_pass=browser.find_element_by_id('password')
#清空输入
elem_pass.clear()
#键入用户名
elem_pass.send_keys('你的密码')
time.sleep(1)
elem_login=browser.find_element_by_xpath('//*[@id="casLoginForm"]/p[5]/button')
#点击登录按钮
elem_login.click()
exit(0)
#以上查询元素用到的id,xpath都要以你输入的url实际情况为准,方法上文我已讲了

这里再补充个内容,有些网页再点击后会进入一个新的网页,即变成一个新的url,这时候再在以前的url上找肯定是找不到的,所以可以在代码中加入这两句

#点击后会生成一个新的页面,所以我们要把句柄转移到新的页面中。
new= browser.window_handles
browser.switch_to.window(new[-1])

下面我贴出来我以教务系统为例的代码,仅供参考,学习以上面的来

# -- coding: utf-8 --
from selenium import webdriver
import time
from selenium.webdriver.common.action_chains import ActionChains

browser=webdriver.Chrome('chromedriver.exe')

#登录
browser.get('https://ee.ntvu.edu.cn')
browser.maximize_window()
time.sleep(3)
first_login=browser.find_element_by_class_name('amp-no-login-zh').click()
time.sleep(3)
elem_user=browser.find_element_by_id('username')
#清空输入
elem_user.clear()
#键入用户名
elem_user.send_keys('***********')
time.sleep(1)
elem_pass=browser.find_element_by_id('password')
#清空输入
elem_pass.clear()
#键入用户名
elem_pass.send_keys('******')
time.sleep(1)
elem_login=browser.find_element_by_xpath('//*[@id="casLoginForm"]/p[5]/button')
#点击登录按钮
elem_login.click()
time.sleep(5)

#教务系统(正确的)
#点击后会生成一个新的页面,所以我们要把句柄转移到新的页面中。
new= browser.window_handles
browser.switch_to.window(new[-1])
elem_login2=browser.find_element_by_xpath('//*[@id="ampTabContentItem0"]/div[1]/pc-card-html-5856488943106402-01/amp-w-frame/div/div[2]/table/tbody/tr[1]/td[2]/a').click()
time.sleep(3)

#正方
wnd2= browser.window_handles
browser.switch_to.window(wnd2[-1])
username=browser.find_element_by_xpath('//*[@id="TextBox1"]').send_keys('***********')
time.sleep(1)
password=browser.find_element_by_xpath('//*[@id="TextBox2"]').send_keys('******')
time.sleep(1)
button=browser.find_element_by_id('RadioButtonList1_2').click()
time.sleep(1)
login=browser.find_element_by_xpath('//*[@id="Button1"]').click()
exit(0)

猜你喜欢

转载自blog.csdn.net/Lorrey_/article/details/124517106
今日推荐