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 搜索

相关代码: https://github.com/Ralph-Wang/webdriver_learning/

posted @ 2013-10-25 23:34  _漏斗  阅读(355)  评论(0编辑  收藏  举报