selenium定位方式-获取标签元素:find_element_by_xxx

定位方式取舍
# 唯一定位方式、多属性定位、层级+角标定位(离目标元素越近,相对定位越好)

# 推荐用css selector(很少用递进层次的定位)
# 什么时候用xpath呢? 当你定位元素时,必须要用角标定位才可以确立唯一时,可以选用xpath

selenium提供18种定位方式,其中包含8种单数 8种复数 2种父类写法

获取标签元素的8种单数方式如下:

element是单数,elements是复数

from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get('http://ui.imdsx.cn/uitester')

# 最大化窗口
driver.maximize_window()

# 将屏幕滚动定位到最上方
js = 'window.scrollTo(0,0);'
driver.execute_script(js)

# 停顿2秒后再进行操作
time.sleep(2)

#####################################

# 通过ID定位目标元素
driver.find_element_by_id('i1')
 
# 通过className定位目标元素
driver.find_element_by_class_name('c1')
 
# 通过name属性定位目标元素
driver.find_element_by_name('n1')
 
# 通过Xpath定位目标元素
driver.find_element_by_xpath('//*[@id="i1"]').send_keys('这是在输入框内输入的文本信息')
 
# 通过css Selector定位目标元素
element=driver.find_element_by_css_selector('input[placeholder="请通过CSS SELECTOR定位元素"]')
element.send_keys('111')
 
# 通过标签名称定位(注:在一个页面中,标签一定会重复,所以不用这个来进行定位)
# 默认写在多个相同标签的第一个里面
driver.find_element_by_tag_name('input').send_keys('111')
 
# 通过标签中的文本查找元素
driver.find_element_by_link_text('跳转大师兄博客地址').click()
 
# 通过标签中文本的模糊匹配查找
driver.find_element_by_partial_link_text('大师兄').click()
# 单数的父类,是上面8种单数方式的底层封装。参数化的一种调用方式而已。
driver.find_element()

获取标签元素的复数方式和单数方式是一一对应的,由于复数形式,返回的是list,使用不方便,不知道要取哪个值,所以实际运用中并不常用

举一个例子:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('http://ui.imdsx.cn/html')

js = 'window.scrollTo(0,1800);'
driver.execute_script(js)

elements = driver.find_elements_by_css_selector('select')
print(elements)

输出结果如下:

[<selenium.webdriver.remote.webelement.WebElement (session="f4e11718e43e6bd3415e10c0e43998e0", element="0.9816753200516803-1")>, <selenium.webdriver.remote.webelement.WebElement (session="f4e11718e43e6bd3415e10c0e43998e0", element="0.9816753200516803-2")>, <selenium.webdriver.remote.webelement.WebElement (session="f4e11718e43e6bd3415e10c0e43998e0", element="0.9816753200516803-3")>, <selenium.webdriver.remote.webelement.WebElement (session="f4e11718e43e6bd3415e10c0e43998e0", element="0.9816753200516803-4")>]
 



猜你喜欢

转载自www.cnblogs.com/denise1108/p/10538356.html