import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.implicitly_wait(3)
driver.get("http://172.31.5.57/")
driver.find_element_by_link_text("登录").click()
# 1.登录
latest_window = driver.window_handles[-1]
driver.close() # 关闭当前窗口,保证浏览器只有一个窗口
driver.switch_to.window(latest_window)
driver.find_element_by_id("username").send_keys("changcheng")
driver.find_element_by_id("password").send_keys("123456")
driver.find_element_by_id("password").submit()
# 2.点击“账号设置”
driver.find_element_by_link_text("账号设置").click()
# 3.点击“个人资料”
# link_text用整个链接的文本进行定位
# partial_link_text可以用链接的一部分进行定位,
# 如果一个链接的文本过长,我们可以考虑用partial_link_text这个方法
driver.find_element_by_partial_link_text("个人资料").click()
# 4.输入真实姓名
# 最好每次sendkeys方法执行之前,都加一个clear()操作
driver.find_element_by_id("true_name").clear()
driver.find_element_by_id("true_name").send_keys("常城")
# 5.选择性别 //*[@value="1"]
# //表示相对路径,不是从html根节点开始的都是相对路径
# * 表示任意标签名,这里可以替换成 //input[@value="1"]
# [@value="1"] 表示value属性的值必须是1
# 所以,会了这种方法,就可以通过元素的任意属性进行定位了
# driver.find_element_by_xpath("//*[@value='1']").click()
# 还有一种更好的方法,也是通过元素的value属性定位
# 通过css_selector的方法,也可以使用任意属性进行定位,只需要在属性两边加上一对中括号即可
# 推荐使用css_selector,因为css_selector找元素的速度更快
driver.find_element_by_css_selector("[value='1']").click()
# 6.设置生日
# 年,月,日一个一个的点击灵活太差,稳定性也很差
# 通过检查元素,我们发现日历控件,其实就是一个文本输入框,那么我们可不可以直接sendKeys日期
# 检查元素,可以发现标签中存在一个readonly属性,表示这是一个只读的输入框,不能手写
# 所以,我们只需要每次输入日期前,除readonly属性即可
# 但是,selenium没有提供删除元素属性的方法
# 幸运的是,javascript可以帮助我们去删除元素的属性,接下来学习javascript
# javascript代码: document.getElementById("date").removeAttribute("readonly")
# javascript代码不能直接写在pycharm集成开发环境中的,所以先当做字符串处理
# python中的字符串的两边可以用单引号,也可以用双引号
# 字符串里面是双引号,外面就用单引号,交错着使用即可
js = 'document.getElementById("date").removeAttribute("readonly")'
# 接下来通过driver浏览器执行这段javascript脚本
driver.execute_script(js)
# 在sendkeys之前应该先用clear()方法清空原来的默认值
driver.find_element_by_id("date").clear()
driver.find_element_by_id("date").send_keys("1980-02-18")
# 7.设置QQ
driver.find_element_by_id("qq").clear()
driver.find_element_by_id("qq").send_keys("123456")
# 8.点击提交按钮
driver.find_element_by_class_name("btn4").submit()
# 9.关闭alter弹出框
# 对于弹出框,有三个操作:确定accept,取消dismiss,获取文本text
# 因为alert弹出框出现在网页加载完成以后,所以implicitly_wait对它不起作用
# 这时仍然需要time.sleep()方法
# 导包:alt + enter 选择import this name,选择较短的time
time.sleep(3)
isSuccess = driver.switch_to.alert.text
print(isSuccess)
driver.switch_to.alert.accept()
selenium+python自动化(完整脚本二)
最新推荐文章于 2024-09-30 16:22:26 发布