【问题标题】:How to name WebElements like div, b, span in Selenium?如何在 Selenium 中命名 div、b、span 等 WebElement?
【发布时间】:2021-12-24 08:40:49
【问题描述】:

例如,我将框架和下拉列表命名为somethingFramesomethingDropDown。但是<div><b><span> 等呢?

有没有这方面的标准(somethingBoldsomethingSpan)?

或者最好保持原样(只是something)?

  @FindBy(xpath = "//b[contains(text(), 'Something')]")
  private WebElement something?;

【问题讨论】:

    标签: java selenium selenium-webdriver naming-conventions


    【解决方案1】:

    根据wikipedia

    命名约定是一组选择字符的规则 序列用于表示变量、类型、 函数,以及源代码和文档中的其他实体。

    使用命名约定的原因(而不是允许 程序员选择任何字符序列)包括以下内容:

    • 减少阅读和理解源代码所需的工作量。
    • 使代码审查能够关注比语法和命名标准更重要的问题。
    • 使代码质量审查工具能够将报告重点主要放在语法和样式偏好以外的重大问题上。

    从顶层来看,PythonJava 中采用了两种不同的命名约定。

    • Python:Python 推荐 UpperCamelCase 用于类名,CAPITALIZED_WITH_UNDERSCORES 用于常量,lowercase_separated_by_underscores em> 用于其他名称。

    • Java:在 Java 中,标识符的命名约定如下:

      • 类名应该是UpperCamelCase中的名词,每个单词的首字母大写。
      • 方法应该是lowerCamelCase中的动词或以小写动词开头的多词名称;也就是说,第一个字母小写,后面单词的第一个字母大写。
      • 局部变量、实例变量、类变量也写在lowerCamelCase中。变量名称不应以下划线 (_) 或美元符号 ($) 字符开头,即使两者都允许。
      • 常量应该用下划线分隔的大写字符书写。常量名称也可以在适当的情况下包含数字,但不能作为第一个字符。

    这个用例

    根据您的用例,要以粗体命名登录的用户名,您可以使用以下内容:

    @FindBy(xpath = "//b[contains(text(), 'scode')]")
    private WebElement loggedUserHomepageBoldName;
    

    要命名用户名上方的标签,您可以使用以下内容:

    @FindBy(xpath = "//b[contains(text(), 'scode')]//preceding::label[1]")
    private WebElement loggedUserHomepageNameLabel;
    

    【讨论】:

      【解决方案2】:

      我通常使用与其他 web 元素相同的约定,它和标签本身的一些独特之处。如果我的目标是包含类似用户名的跨度,我会使用:

        @FindBy(xpath = "//span[@data-testid='loginUsernameLabel']")
        private WebElement loginUsernameLabelSpan
      

      对于锚标记之类的东西,我会使用链接而不是 b.c。它比锚更广为人知,但这只是偏好问题。

        @FindBy(xpath = "//a[@data-testid='loginLink']")
        private WebElement loginLink
      

      如果您与一个团队或一组 QA 一起工作,请一起讨论。选择一个约定并坚持下去。我曾为命名约定非常松散的公司工作,当新人试图通读代码并实施他们没有亲自帮助为其创建 POM 的测试时,这可能会导致代码重复和普遍混乱。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-02-02
        • 2015-10-18
        • 1970-01-01
        • 2016-06-02
        • 1970-01-01
        • 2016-10-04
        • 1970-01-01
        相关资源
        最近更新 更多