web自动化之元素操作与元素等待

本文介绍了Selenium自动化测试中对网页元素的操作,包括点击、获取元素名称和文本、清空输入框、获取属性值等,并详细讲解了三种元素等待方式:强制等待、隐式等待和显示等待。通过实例展示了如何在不同场景下有效地进行元素定位和等待,以确保测试的稳定性和准确性。
摘要由CSDN通过智能技术生成

一、元素操作
1、点击
element.click()
2、获取元素名称
element.tag_name

from selenium import webdriver
import logging
import time

logging.basicConfig(level=logging.DEBUG)
# 启动浏览器驱动服务器
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")

# 找到百度输入框,输入柠檬班
ele = driver.find_element_by_id("kw")
ele.send_keys("冬奥运动会")
target_name = ele.tag_name
print("标签名称:", target_name) # 标签名称: input


3、获取元素文本内容
element.text
在这里插入图片描述

from selenium import webdriver
import logging
import time

logging.basicConfig(level=logging.DEBUG)
# 启动浏览器驱动服务器
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")

# 找到按图片搜索
ele = driver.find_element_by_xpath('//span[text()="关注冰雪赛事 一起向未来"]')
text = ele.text
print("文本内容是:",text)  # 文本内容是: 关注冰雪赛事 一起向未来
ele.click()

time.sleep(3)
driver.quit()

4、清空输入框
element.clear()

from selenium import webdriver
import logging
import time

logging.basicConfig(level=logging.DEBUG)
# 启动浏览器驱动服务器
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
# 找到百度输入框,输入柠檬班
ele = driver.find_element_by_id("kw")
ele.send_keys("冬奥运动会")
time.sleep(4)
# 清空操作,有默认值时,先清空默认值
ele.clear()
time.sleep(3)
driver.quit()

5、获取元素属性值
element.get_attribute(name=‘type’)
在这里插入图片描述

from selenium import webdriver
import logging
import time

logging.basicConfig(level=logging.DEBUG)
# 启动浏览器驱动服务器
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
# 找到百度输入框
ele = driver.find_element_by_id("kw")
ele.send_keys("冬奥运动会")


# # 找到吧百度一下按钮,点一下
ele2 = driver.find_element_by_id("su")
val = ele2.get_attribute("value")
print(val) #百度一下
ele2.click()

time.sleep(3)
driver.quit()

二、元素等待

1、元素等待分类

1、强制等待
2、显示等待
3、隐式等待

1、强制等待
使用time.sleep(5)
2、隐式等待

driver.implicitly_wait(2)
特点:
(1)整个会话只执行一次,但对所有的元素都生效,既所有的元素都会执行元素等待
(2)等待时间以秒为单位
(3)超过元素等待时间,如果元素未出现,那就会定位失败

from selenium import webdriver
import time

# 启动浏览器驱动服务器
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")

# 隐式等待
driver.implicitly_wait(2)

# 找到百度输入框
ele = driver.find_element_by_id("kw")
ele.send_keys("冬奥运动会")


# # 找到吧百度一下按钮,点一下
ele2 = driver.find_element_by_id("su")
val = ele2.get_attribute("value")
print(val) #百度一下
ele2.click()

time.sleep(3)
driver.quit()

3、显示等待

1、在timeout设置的时间内,然后根据poll_frequency设置的时间进去查询元素是否【可见、存在】
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
WebDriverWait类参数:
1、driver:浏览器驱动
2、timeout:元素等待的超时时间(秒),10
3、poll_frequency=POLL_FREQUENCY:轮询周期,默认是0.5秒,1
4、ignored_exceptions:超时后抛出的异常信息,no such element exception

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import time

# 启动浏览器驱动服务器
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")

# 显示等待
locator = (By.ID, "kw")
wait = WebDriverWait(driver=driver, timeout=10, poll_frequency=1)
# 找到百度输入框
ele = wait.until(EC.visibility_of_element_located(locator=locator))

# ele = driver.find_element_by_id("kw")
ele.send_keys("冬奥运动会")

# # 找到吧百度一下按钮,点一下
ele2 = driver.find_element_by_id("su")
val = ele2.get_attribute("value")
print(val)  # 百度一下
ele2.click()

time.sleep(3)
driver.quit()

显示等待使用:

使用
1、分开写
#元素定位表达式
locator = (By.ID,"kw")
#实例化
wait = WebDriverWait(driver=driver, timeout=10, poll_frequency=1)
#元素定位
ele = wait.until(EC.visibility_of_element_located(locator=locator))
#等待多个元素可见
EC.visibility_of_all_elements_located(locator=locator)
 
2、组合写
ele = WebDriverWait(driver=driver, timeout=10, poll_frequency=1).until(EC.visibility_of_element_located(locator=locator))
 

三、By类使用

from selenium.webdriver.common.by import By
ele = driver.find_element_by_id("kw")
ele = driver.find_element(By.ID,"kw")
两种写法一样
locator = (By.Xpath,"//body//a")
locator = ("xpath","//body//a")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值