Selenium +Python项目实践(注册流程)

目录

第一节 如何搭建Selenium环境

1.1 Selenium3.0工作原理
在这里插入图片描述
工作原理详解:
1.Client端上运行脚本的时候通过Driver和浏览器进行会话
2.进行会话的时候创建一个独一无二的会话Session,创建Session之后就直接和浏览器进行会话
3当浏览器再次收到Client发送的脚本时,浏览器会直接解析这个脚本
4.在浏览器中执行脚本中的相应操作,执行完之后会将这个结果返回给Client端

第二节 环境搭建

1.安装Python,安装包下载后直接安装就行,在安装的时候勾选pip(扩展包的管理工具)
2.安装Selenium,使用pip命令安装
3.安装visual studio code编辑器
4.将浏览器的Driver放置到python的安装目录下边

环境部署好后
1.visual studio code编辑器编写.py文件后在调试窗口输入文件运行的路径就可以

PS D:\zuoting\works\Selenium-Python\seleniumtest> cd .\seleniumtest\
PS D:\zuoting\works\Selenium-Python\seleniumtest> python .\start_browser.py

2.一切准备就绪后运行时报错提示

selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 81

说明使用的driver与当前的浏览器版本不对应所以需要下载与当前浏览器对应的版本Driver

第二节 其他

1.注册页面结构分析
通过定位方式中的某种方式无法定位到某个元素时,可以通过Console控制台的document来查找元素
2.使用title_contains检查页面是否正确

print(EC.title_contains("松勤VIP管理系统"))

运行结果:

<selenium.webdriver.support.expected_conditions.title_contains object at 0x03C819B0>

3.使用不能方式定位
常用的元素定位方式有:

driver.find_element_by_id("register_email").send_keys("[email protected]")
driver.find_element_by_class_name("form-control input-lg").send_keys("test01")
driver.find_element_by_name("password").send_keys("111111")
driver.find_element_by_xpath("//*[@id='captcha_code']").send_keys("111111")

但是会发现

driver.find_element_by_class_name("form-control input-lg").send_keys("test01")

通过以上方式找不到用户名时,可以通过DOM来找,
当使用元素定位方式定位有多个同样的元素,是可以定位到多个元素时,但是操作的时默认的第一个元素,如果可以操作就操作,如果不能操作就不操作

更改为

user_name_element_node = driver.find_elements_by_class_name("controls")[1]
user_element = user_name_element_node.find_element_by_class_name("form-control")
user_element.send_keys("test01")

更改为子父节点定位,一层一层的寻找,找到最终的元素,通过下标找到第二个元素,通过第二个元素再找到子节点,再通过子节点找到另外一个元素

4.使用Expected_conditions判断元素是否可见
打开页面就判断元素是是否可见

locator = (By.CLASS_NAME,"controls")
WebDriverWait(driver,1).until(EC.visibility_of_element_located(locator))

运用定位方式,通过智能等待去找页面元素,通过webdriver方式直接,只需要运用WebDriverWait()方法,将这个方法封装起来,只需要穿一个定位方式的值给它就可以了,它会在规定的时间内去找这个元素,如果找到了就往下运行,如果没有找到就返回fasle

5.输入注册用户名字及获取用户信息
设想的用户信息是否与输入的用户信息一致

email_element = driver.find_element_by_id("register_email")
print(email_element.get_attribute("placeholder"))
email_element.send_keys("[email protected]")
print(email_element.get_attribute("value"))

get_attribute()方法,获取属性的时候想取得哪个属性的值,就直接跟上哪个值,如果想取得它的文本,但是没有时,默认先给取Value就可以了

6.如何生成用户名

for i in range(5):
    user_email = (random.sample('1234567890abcdefg',5)
    print(user_email)

如果只是这样的话,生成的就是一个list,并不是想要的字符串效果

for i in range(5):
    user_email = ''.join(random.sample('1234567890abcdefg',5)) + "@163.com"
    print(user_email)

注册过程中需要不同的用户名,只需要使用random()函数来实现

7.如何解决验证码思路
(1)设置一个万能的验证
(2)登录——使用cookie
(3)识别验证码
拿到验证码——》把这个图片保存下来——》按照图片解析下来

将这个图片进行保存

driver.save_screenshot(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸宁七s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值