本文主要介绍了如何利用Selenium对网站进行登录,Xpath元素定位,及窗口操作的一些常用方法,附上详细代码及解析,同时简单总结元素定位不到的原因有哪些。
一、图片验证码登录
1.1、启用浏览器并打开测试网站
代码:
from selenium import webdriver #将webdriver驱动导入selenium框架中 from pip._vendor.requests.cookies import get_cookie_header #导入cookie(获取cookie时使用) import time#导入时间包(后续time函数使用) #将chrome驱动地址赋值给chromdriver browser=webdriver.Firefox()#打开Firefox浏览器 browser.get("https://login.xxxx.com/en?dest_url=https://xxxx.com/en/contact") |
#打开测试网站(此网站地址需要填写自己测试的网站地址)
1.2、设置等待时间
在上面登录过程中网页加载慢,出现了还没等图片完全加载出来就进行图片识别的现象,导致识别失败,如下图
那么我们应该如何操作去避免提前加载的现象呢?
如果给它加一个条件满足(图片验证码显示完全)时:再进行图片识别操作是否可行呢,我们来看看。
Selenium有3种等待时间:
这里使用WebDriverWait()方法:
WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)
driver:浏览器驱动名称
timeout:最长超时时间,默认以秒为单位。
poll_frequency:检测的间隔(步长)时间,默认为0.5S。
ignored_exceptions:超时后的异常信息,默认情况下抛NoSuchElementException异常
WebDriverWait()一般由until()或until_not()方法配合使用
HTML结构:
代码:
Element=WebDriverWait(browser,100).until( EC.presence_of_element_located((By.ID,"captcha_img_id")) ) |
代码意思是:ID名称为"captcha_img_id"的元素显示等待100s,如果没有出现,抛出异常,通过上面方法就可以处理等待页面元素加载完全后进行相关功能操作。
1.3、账号、密码元素定位并输入内容
首先通过F12打开代码界面,点击元素定位图标,选中要定位的"账号"文本框内容,在代码区域找到定位的元素代码信息,如下图中的name名称"login",密码元素同理
代码:
browser.find_element_by_name("Login").send_keys("xxxx") #通过name定位登录文本框,通过send_keys输入账户信息 browser.find_element_by_name("Password").send_keys("xxxx") #通过name定位密码文本框,通过send_keys输入密码信息 |
... ...
查看更多精彩内容,请点击下载:
版权声明:本文出自《51测试天地》第四十九期。51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。