📅  最后修改于: 2023-12-03 15:11:31.965000             🧑  作者: Mango
如果你曾经编写过自动化测试脚本,那么你一定遇到过某些情况:在页面中等待某个元素出现,等到元素可见后再操作。这种情况可以通过等待页面加载完毕再执行脚本的方式来解决,但是这样会导致测试用例的运行时间很长。
因此,现在有一种机器人框架叫做“等到元素可见”框架,它可以帮助程序员实现等待元素可见的操作。这个框架可以在 Python、Java、JavaScript 和 Ruby 中使用,是跨平台的。
该机器人框架最重要的功能是等待元素可见。如果元素不可见,它会等待元素出现或者超时后抛出异常。
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
def wait_for_element(driver, locator, timeout=30):
"""
等待元素可见
:param driver: webdriver实例
:param locator: 定位器,如(By.ID, 'xxx')
:param timeout: 超时时间,默认30秒
"""
WebDriverWait(driver, timeout).until(EC.visibility_of_element_located(locator))
先下载安装 selenium
包,在命令行中执行以下命令:
pip install selenium
接下来,可以按以下步骤使用“等到元素可见”机器人框架:
导入模块:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
创建浏览器实例:
driver = webdriver.Chrome()
访问网址:
driver.get("https://www.example.com")
使用 wait_for_element
函数等待元素可见:
wait_for_element(driver, (By.CSS_SELECTOR, "input#username"))
如果这个元素已经出现了,程序会马上继续执行。如果这个元素没有出现,程序就会等待这个元素出现或者超时。如果等待超时,程序就会抛出 TimeoutException
异常。
try:
wait_for_element(driver, (By.CSS_SELECTOR, "input#username"))
except TimeoutException:
print("等待超时")
“等到元素可见”机器人框架非常适合用于编写自动化测试脚本。它可以解决等待元素加载的问题,可以让测试用例运行更加快速、稳定。