selenium元素操作、元素定位方式和元素八大定位法则、定位一组元素

 

1、元素定位方式及元素操作(元素定位方式看习惯使用,推荐第一种)

  1.1、元素定位方式一(此方式不需要导入By类,相对简单易用)

    直接调用:driver.find_element_by_XX(value),如下实例

# 导入模块
from selenium import webdriver

# 创建一个浏览器对象
driver = webdriver.Firefox()
# 访问网址
url = 'http://www.baidu.com'
driver.get(url)

# 使用第一种方式定位输入框
driver.find_element_by_css_selector('#kw')

# 关闭浏览器
driver.quit()

  1.2、元素定位方式二(此方式需要先导入By类:from selenium.webdriver.common.by import By)

    使用By类型(需要导入By类):driver.find_element(By.XX,value),如下代码

# 导入包
from selenium import webdriver
from selenium.webdriver.common.by import By

# 创建一个浏览器对象
driver = webdriver.Firefox()

# 访问地址
url = 'http://www.baidu.com'
driver.get(url)

# 使用第二种方式定位搜索框
driver.find_element(By.CSS_SELECTOR,'#kw')

# 关闭浏览器
driver.quit()

  1.3、元素操作(点击、输入、清空输入、提交)

    点击:element.click()

    输入:element.send_keys(value)

    清空输入框:element.clear()

    提交:element.submit()

# 导入包
from selenium import webdriver
import time
# 创建一个浏览器对象,访问百度
driver = webdriver.Firefox()
driver.get('http://www.baidu.com')

# 定位输入框后输入搜索内容,点击搜索
# 使用css定位
shu = driver.find_element_by_css_selector('#kw')
# 输入搜索内容
shu.send_keys('特战队')
time.sleep(1)# 意思是休眠一秒
# 清空输入框
shu.clear()
time.sleep(1)
# 重新输入
shu.send_keys('渣渣辉')
time.sleep(1)
# 定位搜索按钮
ss = driver.find_element_by_css_selector('#su')
# 点击搜索
ss.click()# 这里也可以使用submit()提交来点击操作
time.sleep(1)

# 关闭浏览器
driver.quit()

  1.4、元素信息的获取 

    获取元素的文本内容:element.text
    获取元素某个属性的值:element.get_attribute(value)
    获取元素的尺寸:element.size
    获取元素的是否可见:element.is_displayed()

# 导入包
from selenium import webdriver
import time
# 创建一个浏览器对象,访问百度
driver = webdriver.Firefox()
driver.get('http://www.baidu.com')

# 定位到元素
hao = driver.find_element_by_css_selector('a.mnav:nth-child(2)')
# 获取文本内容和此元素某个属性的值(\n为换行)
print('文本内容为:',hao.text,'\nhref属性值',hao.get_attribute('href'))
# 获取元素的尺寸和元素是否可见
print('元素尺寸:',hao.size,'\n元素是否可见:',hao.is_displayed())

# 关闭浏览器
driver.quit()

2、元素八大定位法则

  2.1、ID(定位)

  2.2、name(属性值定位)

  2.3、class name(伪类名定位)

  2.4、tag name(标签名定位)

  2.5、link text(链接文本定位)

  2.6、partail link text(部分链接文本定位)

  2.7、xpath(路径表达式定位)

  2.8、css selector(css选择器定位)

# 导入包
from selenium import webdriver
import time
# 创建一个浏览器对象,访问百度
driver = webdriver.Firefox()
driver.get('http://www.baidu.com')

# ID定位(当某个元素有id值的时候,可以用此方法定位)
driver.find_element_by_id('kw')
# name定位(当某个元素拥有name值,且值为唯一,可以用此方式定位)
driver.find_element_by_name('wd')
# tag name定位(若某个元素标签名唯一,可以使用此方式)
driver.find_element_by_tag_name('input')
# class name定位(当某个元素有class name且唯一,可用此方式)
driver.find_element_by_class_name('s_ipt')
# 链接文本定位(欲定位某个链接元素,可以清楚看见其文本内容,可使用此方式)
driver.find_element_by_link_text('百度一下')
# 部分链接文本定位(某个链接元素文本只能看清部分内容,且此部分文本内容唯一,可用此方式)
driver.find_element_by_partial_link_text('度一下')
# xpath定位(可以任意定位任何元素,此方式表达式不能有错)
driver.find_element_by_xpath(".//*[@id='kw']")
# css定位(此方式定位可以直接使用浏览器自带查看元素复制唯一 选择器【Chrome为copy selector】)
driver.find_element_by_css_selector('#su')

# 关闭浏览器
driver.quit()

此八种方式无优劣之分,只有看定位的元素是否方便,或看个人使用习惯使用

八种方式中xpath和css都较常用,懂其一即可,看习惯使用,前面六种在某些情况下不一定可以成功定位,所有需要多懂几种以免有自己掌握的方式定位不了的情况

 3、定位一组元素

  格式:driver.find_elements_by_XX(vuale)

  定位一组元素的此处也有八种方式,同上,此处以css方式为例

# 导入包
from selenium import webdriver
import time
# 创建一个浏览器对象,访问百度
driver = webdriver.Firefox()
driver.get('http://www.baidu.com')

# 定位到输入框输入内容
shuru = driver.find_element_by_css_selector('#kw')
shuru.send_keys('特战旅')
# 定位到搜索框,点击搜索
sou = driver.find_element_by_css_selector('#su')
sou.click()
# 获取搜索结果(定位一组元素),这里返回的是一个列表,若需要看列表里的东西需要遍历列表
zu = driver.find_elements_by_css_selector('.t>a')
# 打印出来的是列表,列表里有10个不同的数字及字母元素
print(zu)
# 遍历列表,获取结果的标题及链接
for i in zu:
    print('标题:',i.text,'/链接地址:',i.get_attribute('href'))
# 关闭浏览器
driver.quit()

 

posted @ 2020-08-09 18:06  吾言!  阅读(446)  评论(0编辑  收藏  举报