【问题标题】:Selenium Webdriver - Using a stored string in a CSS locatorSelenium Webdriver - 在 CSS 定位器中使用存储的字符串
【发布时间】:2016-06-21 14:33:01
【问题描述】:

我正在尝试编写一个单击链接的自动化步骤,我需要用来定位链接的定位器与标题属性的末尾匹配,原因可能是相同类型的多个链接,其中一些将被命名相同,我正在查看的标题的这一部分是这些链接中唯一保证是唯一的部分(不是我的电话,这是我正在为其编写测试的现有系统)。使用此方法查找链接的定位器没有问题。

注意:由于我的雇主的数据安全限制,代码的某些元素已被修改。

@FindBy(css = "#id .Content form > a[title$='12345678']")
WebElement linkName;

但是,我正在寻找的标题末尾的参考号可能会根据其他数据输入而改变,并且它将在我的自动化套件中的多个地方使用,所以我想做的是存储该数字作为套件一开始的字符串,并具有定位器,以及需要它的任何其他区域,引用它,这是我的麻烦开始的地方。我似乎无法让定位器引用字符串。当我尝试这个时,我不断收到错误,通常是语法错误。

@FindBy(css = "#id .Content form > a[title$='%s']", titleVariable)
WebElement linkName;

我已尝试多次重新排列,但似乎无法将其转换为有效格式。欢迎提出任何建议。

如果这似乎不清楚,我深表歉意,如上所述,由于我的雇主业务的性质,由于数据安全限制,我无法提供太多细节,因此不得不以比我所能做的更全面的方式解释事情.

【问题讨论】:

    标签: java selenium selenium-webdriver css-selectors


    【解决方案1】:

    首先,你必须在这里使用常量变量。所以使用如下代码:

    final String titleVariable = "ur title";
    
    @FindBy(css = "#id .Content form > a[title$='"+titleVariable+"']")
    WebElement linkName;
    

    【讨论】:

      【解决方案2】:

      如果你在这个类中有 WebDriver 对象,你可以这样做:

      String titleVariable = "Your Title";
      String cssSelector = "#id .Content form > a[title$='" + titleVariable + "']";
      
      WebElement linkName = driver.findElement(By.cssSelector(cssSelector));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多