Selenium-Webdriver(python)学习笔记(三)
----定位元素,操作元素
1.定位元素
定位元素有多种方法,如下:
* id HTML标签的id属性
* name HTML标签的name属性
* class_name HTML标签的class属性
* css_selector 元素使用到的css选择器
* link_text 链接的显示文本
* partial_link_name 链接显示文本的一部分
* tag_name 标签名
* xpath (相关教程: w3cschool)
具体代码如下:
import os from time import sleep from distutils import log from selenium import webdriver dr = webdriver.Firefox() dr.get('file:///%s' % (os.path.abspath('SignIn.html')) ) # 通过id定位到用户名输入框 username = dr.find_element_by_id('login_field') # 输出用户名输入框的值 log.warn(username.get_attribute('value')) # 通过name定位到密码输入框 pwd = dr.find_element_by_name('password') # 输出密码输入框的值 log.warn(pwd.get_attribute('value')) # 通过class_name定位到SignIn按钮 signIn = dr.find_element_by_class_name('button') # 输出SignIn按钮的值 log.warn(signIn.get_attribute('value')) # 通过css_selector定位到用户名输入框 username_by_css = dr.find_element_by_css_selector("input[type='text']") # 输出用户名输入框的值 log.warn(username_by_css.get_attribute('value')) # 通过link_text定位到forgot..链接 forgot = dr.find_element_by_link_text('(forgot password)') # 输出链接地址 log.warn(forgot.get_attribute('href')) # 通过partial_link_text定位到forgot..链接 forgot_by_p = dr.find_element_by_partial_link_text('forgot') # 输出链接地址 log.warn(forgot_by_p.get_attribute('href')) # 通过tag_name定位到大标题 head1 = dr.find_element_by_tag_name('h1') # 输出标签内文本 log.warn(head1.text) # 通过xpath定位到用户名的label username_label= dr.find_element_by_xpath('//*[@id="login"]/form/div[3]/label[1]') # 输出标签内文本 log.warn(username_label.text) dr.close()
输出结果:
Defaut User
1a2b3c4d
Sign in
Defaut User
file:///c:/github/webdriver_learning/locate_operate/SignIn.html#
file:///c:/github/webdriver_learning/locate_operate/SignIn.html#
Sign in
Username or Email
2.操作元素
通过find_element_by_*系列方法定位到的元素,有四个基本操作函数(这里指模拟测试行为的操作)
* clear 清空文本框/域的值
* click 点击元素
* send_keys 模拟键盘输入
* submit 提交元素所在表单
代码如下:
operate.py
import os from time import sleep from distutils import log from selenium import webdriver dr = webdriver.Firefox() dr.get('file:///%s' % (os.path.abspath('SignIn.html')) ) # 通过id定位到用户名输入框 username = dr.find_element_by_id('login_field') username.clear() username.send_keys('change the username') # 输出用户名输入框的值 log.warn(username.get_attribute('value')) # 通过name定位到密码输入框 pwd = dr.find_element_by_name('password') pwd.clear() pwd.send_keys('change the pwd') # 输出密码输入框的值 log.warn(pwd.get_attribute('value')) # 通过class_name定位到SignIn按钮 signIn = dr.find_element_by_class_name('button') # 试试clear能否清除按钮的值 # signIn.clear() 不行 # 点击SignIn按钮 signIn.click() log.warn(signIn.get_attribute('value')) sleep(5) dr.close()
operate_submit.py
from time import sleep from distutils import log from selenium import webdriver dr = webdriver.Firefox() dr.get('http://www.google.com.hk') # 定位搜索文本框 s = dr.find_element_by_id('lst-ib') s.send_keys('selenium-webdriver') s.submit() sleep(3) log.warn(dr.title) sleep(3) dr.close()
输出结果:
operate.py:
change the username
change the pwd
Clicked
operate_submit.py
selenium-webdriver - Google 搜索