Selenium 学习笔记
Posted Be What You Wanna Be
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Selenium 学习笔记相关的知识,希望对你有一定的参考价值。
理一下定位网页元素方法:
1. find_element_by_id() : 通过ID属性定位,需要节点包含id ,如<input type="text" placeholder="邮箱/手机/用户名" class="login-input" name="username" id="username">
2. find_element_by_name() : <input type="text" placeholder="邮箱/手机/用户名" class="login-input" name="username" id="username">
3. find_element_by_class_name() :<input type="text" placeholder="邮箱/手机/用户名" class="login-input" name="username" id="username">
4. find_element_by_css_selector() :在网页上选中元素---右键检查---在高亮的html代码中,继续右键,选择copy---copy selector
5. find_element_by_link_text("登录"):察看网页标签对之间文本,<a href="/index.php">登录</a>,必须是a标签,必须有文本
上述常见方法得区别:
1. id 和name依赖网页必须存在该元素
2. class_name往往有很多
3. link_text和partial_text(局部文本)只能针对文本A标签
4. css_selector和xpath 基本能定位所有元素
常见得一些行为:
click() :点击
clear():清空
send_keys() :输入
接着上次得写。
功能步骤:
1. 输入用户名、密码、确认密码、手机、邮箱,点击 注册 按钮。
2. 点击个人资料,更改个人资料。
下面来自动化它们~
1 from selenium import webdriver
2
3 driver = webdriver.Chrome()
4 driver.get("http://localhost/")
5 driver.maximize_window()
6
7 js = \'document.getElementsByClassName("site-nav-right fr")[0].childNodes[3].removeAttribute("target")\'
8 # 注意单双引号
9 driver.execute_script(js)
10 driver.find_element_by_link_text("注册").click()
11 # find_element_by_ 通过各种方式获取目标节点,click()模拟用户点击
12
13 # current_tab = driver.current_window_handle
14 # # current_tab 是首页
15 # all_tab = driver.window_handles
16 # for i in all_tab:
17 # if i == current_tab:
18 # driver.close()
19 # else:
20 # driver.switch_to.window(i)
21
22 # 填写注册信息
23 driver.find_element_by_name("username").send_keys("眼底有霜")
24 driver.find_element_by_name("password").send_keys("jingmingtian")
25 driver.find_element_by_name("userpassword2").send_keys("jingmingtian")
26 driver.find_element_by_name("mobile_phone").send_keys("18612345678")
27 driver.find_element_by_name("email").send_keys("18612345678@cc.cc")
28 driver.find_element_by_name("email").submit()
29 #driver.find_element_by_class_name("reg_btn").click()
30
31 # 提交表单操作,可以通过点击按钮 也可以在最后一项末尾添加submit()进行表单提交
上面写得是注册模块,结果页面是 :
下面用刚刚注册得帐号登录,然后点击账户设置---个人资料,输入个人信息。重点是关于日历模块、单选框模块得处理。
1 import time
2 from selenium import webdriver
3
4 driver = webdriver.Chrome()
5 driver.get("http://localhost/index.php")
6 driver.maximize_window()
7 driver.implicitly_wait(30)
8
9 # 点击登录按钮,切换窗口,然后输入帐号
10 driver.find_element_by_link_text("登录").click()
11 current_tab = driver.current_window_handle
12 all_tab = driver.window_handles
13 for i in all_tab:
14 if i != current_tab:
15 driver.switch_to.window(i)
16 else:
17 driver.close()
18
19 driver.find_element_by_name("username").send_keys("眼底有霜")
20 driver.find_element_by_name("password").send_keys("jingmingtian")
21 driver.find_element_by_name("cookie").click()
22 driver.find_element_by_class_name("login_btn").click()
23
24 driver.find_element_by_link_text("账号设置").click()
25 driver.find_element_by_link_text("个人资料").click()
26
27
28 driver.find_element_by_id("true_name").send_keys("消愁")
29 xb = driver.find_elements_by_id("xb")
30 xb[1].click()
31 # find_elements 记得是带S得,获取节点下所以元素,结果是数组形式
32
33 # 日历模块,查看源码发现,带有readonly 属性,无法直接写入,而通过日历模块选择太麻烦,所以先清除该属性
34 js = \'document.getElementById("date").removeAttribute("readonly")\'
35 driver.execute_script(js)
36
37 driver.find_element_by_id("date").send_keys("2000-01-01")
38 driver.find_element_by_id("qq").send_keys("1111111")
39 driver.find_element_by_class_name("btn4").click()
40
41 # 提交表单后,会生成浏览器弹窗
42 time.sleep(3)
43 # time这块,输入后,字体下方会提示红线,证明当前找不到这个方法,需要导入。
44 # 直接按快捷键 Alt + Enter 快捷导入
45 driver._switch_to.alert.accept()
46
47 # 弹窗有accept() 和dismiss()
下次写添加商品、寄送地址以及点击购物车进行结算。
--- 2017-09-08 11:44:55
以上是关于Selenium 学习笔记的主要内容,如果未能解决你的问题,请参考以下文章
[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等(代码片段