selenium (一) webdriver 元素定位方法

在selenium/webdriver/remote/webdriver中可以看到webdriver提供的元素定位方法。

目前提供的定位方式共8种:
find_element_by_id()
find_element_by_xpath()
find_element_by_link_text()
find_element_by_partial_link_text()
find_element_by_name()
find_element_by_tag_name()
find_element_by_class_name()
find_element_by_css_selector():

另外,webdriver中还提供了8种元素复数的定位方法,返回的结果是一个元素列表:
find_elements_by_id()
find_elements_by_xpath()
find_elements_by_link_text()
find_elements_by_partial_link_text()
find_elements_by_name()
find_elements_by_tag_name()
find_elements_by_class_name()
find_elements_by_css_selector()

这8种定位方法,主要是以前端页面标签和属性的形式进行元素定位。
比如下标签:
<input name="account1" id="account" class="account input" pattern="required" placeholder="邮箱/用户名/已验证手机" inform="0" />

通过id方式定位:
element_account=driver.find_element_by_id("account")
element_account.send_keys("[email protected]")

通过name方式定位:
element_account1=driver.find_element_by_name("account1")
element_account1.send_keys("[email protected]")

通过class方式定位:
element_account=driver.find_element_by_class_name("account input")
element_account.send_keys("[email protected]")


link_text、partial_link_text用于定位超链接
find_element_by_link_text() 需要传递整个超链接作为参数(参数值如果为中文,需要转为unicode)
find_element_by_partial_lint_text() 可以只传递部分超链接值作为参数(参数值如果为中文,需要转为unicode)

<a href="/tshop/index.php?con=simple&amp;act=reg">立即注册</a>
element_link=driver.find_element_by_link_text(u"立即注册")
element_link.click()


element_link=driver.find_element_by_partial_link_text(u"注册")
element_link.click()


通过xpath方式定位:
element_xpath=driver.find_element_by_xpath('//[@id="main"]/div/div/form/ul/li[4]/button')
element_xpath.click()


通过css方式定位:
element_css=driver.find_element_by_seletor_css("li:nth-child(4) > button")
element_css.click()


至于定位单个元素与多个元素的方式差不多,主要区别是element 返回值单个元素,elements返回的是一个元素列表。

element_menu=driver.find_elements_by_xpath('//*[@id="header"]/div[3]/ul/li[@class="link"]')
element_menu[1].click() #点击菜单栏的【限时抢购】(通过列表下标的形式调用)

实例代码:

#-*-encoding:utf-8-*-
from selenium import webdriver
from time import sleep


driver=webdriver.Chrome()
driver.get("http://testshop:8081/tshop/index.php?con=simple&act=login")

#登录
def login_shop(userName,pwd):
	element_account=driver.find_element_by_id("account")   #通过id定位
	element_account.send_keys(userName)
	element_password=driver.find_element_by_name("password")  #通过name定位
	element_password.send_keys(pwd)
	element_loginBtn=driver.find_element_by_xpath('//button[@class="btn btn-main "]')  #通过xpath定位
	element_loginBtn.click()


def click_menu(value):
	#0:首页、1:限时抢购、2:团购、3:服装、4:手机商城
	element_menu=driver.find_elements_by_xpath('//*[@id="header"]/div[3]/ul/li[@class="link"]')   #通过elements 获取整个菜单元素,并存放在list中
	element_menu[value].click()  #通过list下标进行点击操作

login_shop(userName="[email protected]",pwd="123456")
sleep(2)
click_menu(2)

  

猜你喜欢

转载自www.cnblogs.com/JcHome/p/10802066.html