Selenium 元素查找和操作元素

本文详细介绍了Selenium自动化测试中元素的查找方法,包括ID、CLASSNAME、TAG、find_element及find_elements等。同时,讲解了等待时间的设置、元素的点击、输入和信息获取等操作。此外,还深入探讨了CSS选择器的使用,包括基础使用、联合使用、组选择和按次序选择子元素。通过实例展示了如何在实际测试中高效地定位和操作网页元素。
摘要由CSDN通过智能技术生成

1. 元素查找基本方法

1.1 ID

driver.find_element_by_id('id')

1.2 CLASS NAME

通过 class 类名查找:

elements = driver.find_elements_by_class_name("animal")
for element in elements:
print(element.text)

注意,如果换做 find_element_by_class_name,则只选择第一个满足条件的元素

一个元素可以有多个 class,用空格隔开,任何一个 class 都可以作为关键词,但不能一次使用多个 class,如:

driver.find_elements_by_class_name("classA")
driver.find_elements_by_class_name("classB")
driver.find_elements_by_class_name("classA classB")	// error

1.3 TAG

可以通过元素的标签名选择元素:

elements = driver.find_elements_by_tag_name('div')

1.4 find_element & find_elements

find_elements 选择所有满足条件的元素,返回一个列表,无满足条件的元素则返回 空列表

find_elemen 选择第一个满足条件的元素,查找失败则 抛出异常


1.5 Element 标签内部查找

查找返回的 WebElement 对象也可以调用 find_element 函数进行内部查找:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('url')

div = driver.find_element_by_id('id')
spans = div.find_elements_by_tag_name('span')
for span in spans:
    print(span.text)


2. 等待时间

由于程序的执行速度可能会比浏览器的响应速度快,有时页面未加载完成程序就已经在查找了,查找失败并抛出异常。

因此需要设置等待时间等待页面的加载,selenium 提供了 implicitly_wait(),它接受一个参数 —— 最大等待时长,在超时前每隔半秒查询一次,直到查找成功。超时后仍未查找成功则抛出异常!

如百度搜索:我有两颗糖

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
driver.implicitly_wait(8)

imput_button = driver.find_elements_by_id('wd')
imput_button.click()
imput_button.send_keys('我有两颗糖\n')
driver.find_element_by_class_name('c-abstract')


3. 操控元素

操控元素的常用操作包含:点击、输入内容、获取元素的信息(文本、属性等)

3.1 点击

通过 element.click() 实现点击:

element = driver.find_element_by_id('id')
element.click()

3.2 输入框

可以清空输入框、输入内容:

element = driver.find_element_by_id('username')
element.clear()
element.send_keys('xxx\n')

3.3 获取元素信息

获取元素的 text:

element = driver.find_element_by_id('user')
print(element.text)

通过 get_attribute 获取熟悉值:

element = driver.find_element_by_id('user')
print(element.get_attribute('class'))
element = driver.find_element_by_class_name('input')
print(element.get_attribute('value'))

获取 HTML 内容(整个元素 HTML 或 元素内部的 HTML):

element = driver.find_element_by_id('id')
print(element.get_attribute('outerHTML'))	// 获取整个元素对应的 HTML
print(element.get_attribute('innerHTML'))	// 获取元素内部分HTML


4. CSS selector

4.1 基础使用

语法:

element = driver.find_element_by_css_selector('#id')
elements = driver.find_elements_by_css_selector('.class')

CSS 选择器规则:

id: #id

class: class

直接子元素: tag1 > tag2 > tag3

后代元素: tag1 tag3

相邻元素:tag1 + tag2

属性选择: [attribute_name="attribute_value"]

  1. div[class = “animal”]
  2. input[id = “username”] ID 属性值为 username
  3. a[href*=“hnu”] 属性 href 的值包含 hnu 字符串的 a 标签
  4. a[href^=“https”] 属性 href 以 https 打头的 a 标签
  5. a[href^=“https”][href$=".cn"] 组合选择

4.2 联合使用

筛选下面的 Tom:

<div id="animal">
    <div class="cat">
        <span id="1">Tom</span>
        <span id="2">Karl</span>
    </div>
    <div calss="mouse">
        <span id="3">Jerry</span>
    </div>
</div>

CSS 选择器表达式为:

div#animal > div.cat > span#1

可以简化为:

#animal #1

4.3 组选择

可以一次选择多个对象(选择所有学生中的男孩子和女孩子):

.student > .boys, .student > .girls, 

4.4 按次序选择子元素

使用 span:nth-child(n) 选择第 n 个 span 元素;

使用 span:nth-last-child(n) 选择倒数第 n 个 span 元素;



REFERENCE:

  1. https://www.bilibili.com/video/BV1Z4411o7TA?p=1
  2. http://www.python3.vip/tut/auto/selenium/01/
  3. xpath 选择元素
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Selenium中,可以使用以下方法来查找操作网页元素: 1. `find_element_by_xxx` 方法:此类方法用于查找单个元素,其中 `xxx` 可以是元素的 `id`、`name`、`class name`、`tag name`、`link text`、`partial link text`、`xpath` 或 `css selector`。 例如,要查找id为`myElement`的元素,可以使用以下代码: ```python element = driver.find_element_by_id('myElement') ``` 2. `find_elements_by_xxx` 方法:此类方法用于查找多个元素,其中 `xxx` 的用法与上面相同。 例如,要查找所有class为`myClass`的元素,可以使用以下代码: ```python elements = driver.find_elements_by_class_name('myClass') ``` 3. 对元素进行操作:一旦找到了元素,就可以对它进行各种操作了。下面是一些常见的操作: - 获取元素的文本内容: ```python text = element.text ``` - 获取元素的属性值: ```python attribute_value = element.get_attribute('attribute_name') ``` - 在元素中输入文本: ```python element.send_keys('text to input') ``` - 点击元素: ```python element.click() ``` - 在元素上执行JavaScript代码: ```python driver.execute_script('arguments[0].style.border = "2px solid red";', element) ``` 注意,在执行某些操作之前,可能需要等待元素出现或变为可见状态,否则会抛出异常。可以使用 `WebDriverWait` 类来等待元素。 例如,要等待id为`myElement`的元素出现并点击它,可以使用以下代码: ```python from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By # 等待元素出现 element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'myElement'))) # 点击元素 element.click() ``` 以上就是Selenium库中常用的查找操作元素的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值