本文主要和大家讲下selenium的基础操作,这节就相当于数学里面的要学加减乘除一样。而我把这些方法主要归纳为3点:元素定位、元素属性和元素操作。
1. 元素定位
要对页面进行操作,肯定要进行元素定位的。例如,我要输入账号,首先要找到账号的输入框;我要登入,则要找到登入按钮在点击。
定位元素可以分为单个元素定位,和多个元素定位
web.find_element_by_id()
web.find_element_by_name()
web.find_element_by_class_name()
web.find_element_by_link_text()
web.find_element_by_partial_link_text()
web.find_element_by_xpath()
web.find_element_by_css_selector()
而多个元素的话就是element后面多了个s,例如web.find_elements_by_id();多个元素定位,可用变量多个元素获取单个元素再进行操作,暂时不做讨论,主要需要掌握的是单个元素的定位。
下面我们就来实战了解下
准备工作,编写对定位元素高亮显示的脚本
开始定位元素的练习
元素高亮显示脚本:
def highlight(element):
# web.execute_async_script(script, args) 异步执行 script:被执行的JS代码args:js代码中的任意参数
# web.execute_script(script, args) 同步执行script:被执行的JS代码 args:js代码中的任意参数
# arguments[0].setAttribute('style',arguments[1]) 把arguments第二个值设置为arguments[0]的样式
# 当您同步执行某项任务时,您将等待它完成,然后再转到另一项任务。当您异步执行某项任务时,您可以在它完成之前转移到另一个任务
web.execute_script("arguments[0].setAttribute('style',arguments[1]);",element,
"blackbround:black; border:2px solid red;")
time.sleep(3)
web.execute_script("arguments[0].setAttribute('style',arguments[1]);", element, "")
下面是定位元素的代码,但是定位元素的话,不同情况要具体分析,例如有多个元素的,有在不同iframe的,以后在详细讲解
kw=web.find_element_by_id('su')
# highlight(kw)# kw=web.find_element_by_name('wd')
# highlight(kw)# kw=web.find_element_by_class_name('bg.s_btn') #class_name 参考https://www.cnblogs.com/lunvo/p/9183129.html
# highlight(kw)# kw=web.find_element_by_link_text('新闻')
# highlight(kw)# kw=web.find_element_by_partial_link_text('地')
# highlight(kw)# kw=web.find_element_by_xpath('//*[@id="qrcode"]/div/div[2]/p[1]')
# highlight(kw)# kw=web.find_element_by_css_selector('#su')
# highlight(kw)## web.find_element_by_css_selector()# web.quit()
2.web属性和方法
Current_url 获取测试地址
Page_source 获取页面代码
Title 获取当前测试页面标题
Forward 页面前进
Back 页面后退
Quit 退出浏览器
Close 关闭浏览器
Get 加载测试地址
Refresh 刷新
Maximize_window 窗口最大化
Name 浏览器的名字
具体代码如下,如果觉得太快可以用time.sleep(x)设置等待时间,新手的话,希望实践一遍加深理解:
# web.minimize_window()
# web.maximize_window()
# print('测试地址为:{0},页面代码是:{1}'.format(web.current_url,web.page_source))
# print('页面测试标题是:{0}'.format(web.title))
# print('使用的浏览器:{0}'.format(web.name))
# web.find_element_by_link_text('新闻').click()
# web.back()# web.forward()# web.refresh()
# web.close()
# web.quit()3.Webelement属性和方法
Click 点击(鼠标事件下次详讲)
Sendkeys 输入字符(键盘事件下次详讲)
Clear 清空
Get_attribute 获取元素属性的值
Is_displayed 判断元素对用户是否可见
Is_enabled 用于测试文本是否可编辑
Is_selected 判断是否选中(用于勾选框;例如:性别:口男 口女,懒得找素材不讲)
Submit 提交表单(暂时不讲,懒得找素材)
代码如下:
web.find_element_by_id('kw').send_keys('elemnet属性和方法')
time.sleep(1)
web.find_element_by_id('kw').clear()
time.sleep(1)
shurukuang=web.find_element_by_id('kw')
shurukuang.send_keys('elemnet属性和方法')
print(web.find_element_by_id('su').get_attribute('value'))#value是html的一个属性,这里指按钮的文本
print('title是否可见:{0}'.format(web.find_element_by_id('quickdelete').is_displayed()))
print('输入框是否可见:{0}'.format(shurukuang.is_displayed()))
print('输入框是否可编辑:{0}'.format(shurukuang.is_enabled()))web.find_element_by_id('su').click()
print('按钮是否可编辑:{0}'.format(web.find_element_by_id('su').is_enabled()))
结果如下:

至于百度的按钮为什么是可以编辑的,建议大家厉害后看文档,了解is_enabled的具体运行规则
上诉代码,加上下面这部分代码可以直接运行:
#首要导入工作需要的python库
import selenium
import time
from selenium import webdriver
#web相当于对象浏览器的一个具体的值
web=webdriver.Chrome()
#设置默认等待时间,避免突发情况
web.implicitly_wait(10)
#浏览器获取页面
web.get('https://www.baidu.com/')有什么建议欢迎有空交流~ 求关注
个人公众号:测试学python之个人笔记

微信扫一扫
关注该公众号