Selenium自动化测试实战:从入门到实践

Selenium是一个强大的自动化测试工具,它允许开发者编写脚本来模拟用户在Web浏览器中的操作。在Python中,Selenium库是自动化Web测试的首选工具之一。本文将介绍如何在Python中使用Selenium进行基础操作、探索高级特性,并分享一些最佳实践。

一、安装与配置

首先,确保你的环境中已安装Python。通过pip安装Selenium库:

pip install selenium

接下来,下载与你的浏览器版本相匹配的WebDriver,并将其路径添加到系统的环境变量中,或在Python脚本中直接指定WebDriver的路径。

二、基础操作

2.1 启动浏览器

from selenium import webdriver  
  
# 指定WebDriver路径(如果已添加到环境变量,可省略)  

#driver_path = 'path/to/chromedriver'  
#driver = webdriver.Chrome(executable_path=driver_path)  
driver = webdriver.Chrome()  
# 打开网页  
driver.get('http://www.baidu.com')

2.2 页面元素定位与操作

Selenium提供了多种元素定位策略,如ID、CSS选择器、XPath等。

from selenium.webdriver.common.by import By  
  
# 定位并操作元素  
search_box = driver.find_element(By.ID, 'search-box')  
search_box.send_keys('Selenium')  
search_button = driver.find_element(By.CSS_SELECTOR, '.search-button')  
search_button.click()

三、高级特性

3.1 显式等待

显式等待用于等待某个条件成立时继续执行,否则在达到最大等待时间时抛出异常。

from selenium.webdriver.support.ui import WebDriverWait  
from selenium.webdriver.support import expected_conditions as EC  
  
try:  
    element = WebDriverWait(driver, 10).until(  
        EC.presence_of_element_located((By.ID, 'myDynamicElement'))  
    )  
finally:  
    driver.quit()

3.2 隐式等待(不推荐)

隐式等待对整个driver的寿命周期内设置等待时间,但通常不推荐使用,因为它会影响性能。

3.3 页面对象模式(POM)

页面对象模式是一种设计模式,它将每个页面的测试逻辑封装在单独的对象中,有助于减少代码重复并提高测试的可维护性。

class LoginPage:  
    def __init__(self, driver):  
        self.driver = driver  
        self.username_field = (By.ID, 'username')  
        self.password_field = (By.ID, 'password')  
        self.login_button = (By.ID, 'login_button')  
  
    def login(self, username, password):  
        self.driver.find_element(*self.username_field).send_keys(username)  
        self.driver.find_element(*self.password_field).send_keys(password)  
        self.driver.find_element(*self.login_button).click()

3.4 JavaScript执行

在某些情况下,可能需要使用JavaScript来处理Selenium无法直接实现的操作。

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

四、最佳实践

以下为示例(打开百度输入python,清空输入在输入selenium,并且搜索后划到底部)
首先查看源代码获取输入框绑定的id为‘kw’,搜索按钮“百度一下”绑定的id为‘su’。
在这里插入图片描述
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/68d7af8937304909acf4c6411106ec77.png

# 导入webdriver模块用于浏览器控制
from selenium import webdriver
# 导入By类,用于定位页面元素
from selenium.webdriver.common.by import By
# 导入time模块用于暂停执行
import time

# 判断是否作为主程序运行
if __name__ == '__main__':
    # 初始化Edge浏览器驱动(确保已安装并配置Edge WebDriver)
    browser = webdriver.Edge()
    try:
        # 打开百度主页
        browser.get('https://www.baidu.com')
        # 通过ID定位搜索框并赋值给input变量
        input = browser.find_element(By.ID, 'kw')
        # 在搜索框中输入'python'
        input.send_keys('python')
        # 暂停2秒,以便观察
        time.sleep(2)
        # 清空搜索框
        input.clear()
        # 再次在搜索框中输入'Selenium'
        input.send_keys('Selenium')
        # 通过ID定位搜索按钮并赋值给button变量
        button = browser.find_element(By.ID, 'su')
        # 点击搜索按钮
        button.click()
        # 等待数据加载完成
        time.sleep(10)
        # 执行JavaScript脚本滚动页面到底部
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight)")
        # 暂停5秒,以便观察页面滚动后的内容
        time.sleep(5)
    except Exception as e:
        # 捕获并打印执行过程中发生的任何异常
        print(e)
    finally:
        # 显式地关闭浏览器,通常在脚本结束时添加browser.quit()来关闭浏览器
        browser.quit()     

通过遵循上述最佳实践,你可以更有效地使用Selenium来编写高质量的自动化测试脚本,从而提高测试效率和软件质量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shadow℘Coder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值