📜  @findby selenium (1)

📅  最后修改于: 2023-12-03 15:13:11.656000             🧑  作者: Mango

Selenium的findby方法介绍

Selenium是一个浏览器自动化测试工具,常用于Web界面自动化测试。其提供了一系列的API方法,其中就包括了“元素查找”方法,也就是所谓的“find”方法。

在Selenium中,可以使用find_element_by_XXX()方法和find_elements_by_XXX()方法来查找元素。其中,find_element_by_XXX()方法返回的是单个元素,而find_elements_by_XXX()方法返回的是元素列表。

@findby注解

@findby注解是一个Selenium的扩展,其主要目的是为了提高测试脚本的可读性和可维护性。使用@findby注解可以将查找元素的代码与测试脚本代码分开,并且可以将查找元素的代码封装在一个方法中,方便在多个测试脚本中进行调用。

使用@findby注解需要先导入from selenium.webdriver.common.by import By,然后在需要查找元素的类或方法上添加注解并传入查找元素的方式和元素定位器。

from selenium.webdriver.common.by import By

class LoginPage:
    # 使用@findby注解
    @findby(how=By.ID, using='username')
    def username_input(self):
        pass
    
    @findby(how=By.ID, using='password')
    def password_input(self):
        pass
    
    @findby(how=By.XPATH, using='//button[text()="Login"]')
    def login_button(self):
        pass

上面的示例中,我们创建了一个名为LoginPage的类,并在类中使用@findby注解分别定义了三个查找元素的方法,分别对应了用户名、密码和登录按钮三个元素。在注解中,我们使用了ID和XPATH两种方式进行定位。

参数说明

@findby注解有两个必要的参数:

  • how:查找元素的方式,可选值包括:By.ID、By.NAME、By.XPATH、By.CLASS_NAME、By.TAG_NAME、By.LINK_TEXT、By.PARTIAL_LINK_TEXT。
  • using:元素定位器,可以是ID、名称、XPATH路径或其他定位方式的表达式。

@findby注解还可以添加一个可选的参数:

  • wait_time:查找元素的超时时间,单位为秒,默认值为10秒。
总结

使用@findby注解可以将元素查找的代码与测试脚本代码分离开来,提高了代码的可读性和可维护性。在实际的测试中,我们可以根据需求选择合适的查找元素的方式和元素定位方式。