【问题标题】:Can i search an element through By.name, with only partial name?我可以通过 By.name 搜索元素,只有部分名称吗?
【发布时间】:2018-12-13 02:58:53
【问题描述】:

我一直在用

WebElement strecord = driver.findElement(By.name("Ui_u123));

值只能使用“By.name”定位

字段现在是动态的,但前 3 个字符始终是“Ui_u

我现在怎么才能找到它,“By.name”包含......?

【问题讨论】:

    标签: java selenium xpath css-selectors webdriver


    【解决方案1】:

    你可以试试这个xpath:

    //*[starts-with(@name,'Ui_u')]  
    

    虽然这是 xpath。我不确定带有 Name 属性的 starts-with

    它可能匹配多个元素。在这种情况下,您将不得不使用findElements()

    代码

    List<WebElement> strecord = driver.findElements(By.xpath("//*[starts-with(@name,'Ui_u')]"));  
    

    作为@HellPine 答案的补充。您可以将 css 选择器编写为:

    tagName[name^='Ui_u']
    

    【讨论】:

      【解决方案2】:

      你为什么不试试 CSS 方式 [name*='Ui_u']

      注意*= 表示包含,您可以将[] 用于元素上的任何标记。

      问候,

      【讨论】:

      • 注意 * 用于匹配子字符串部分。您可能想将其更改为 ^ ,作为 start-with 的替代品。
      【解决方案3】:

      直接回答,,你不能将containsBy.name结合使用。

      说明

      根据Locator Strategies,当您使用driver.findElement(By.name("Ui_u123)); 时,内部Java 客户端 实现:

      case "name":
        toReturn.put("using", "css selector");
        toReturn.put("value", "*[name='" + value + "']");
        break;
      

      转换定位器策略:

      driver.findElement(By.name("Ui_u123));
      

      到:

      driver.findElement(By.cssSelector("[name='Ui_u123']));
      

      您可以在Official locator strategies for the webdriver找到详细讨论


      现在,如果你强行尝试使用关键字contains,它将引发InvalidSelectorException,如下所示:

      org.openqa.selenium.InvalidSelectorException: invalid selector: Unable to locate an element with the xpath expression
      

      如果您想实现类似于contains 的方法,您可以使用以下任一解决方案:

      • ^:表示一个属性值

        开头
        WebElement strecord = driver.findElement(By.cssSelector("[name^='Ui_u']));
        
      • $:表示属性值结尾(不适用于您的情况,因为属性以Ui_u开头)

        WebElement strecord = driver.findElement(By.cssSelector("[name$='123']));
        
      • *:表示一个属性值包含

        WebElement strecord = driver.findElement(By.cssSelector("[name*='Ui_u']));
        

      您可以在How to get selectors with dynamic part inside using Selenium with Python?找到详细讨论

      【讨论】:

      • 我收到“'css 选择器'无效或实施的搜索策略。” c# 中的异常。有什么想法吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-30
      • 1970-01-01
      • 2023-01-11
      • 1970-01-01
      • 1970-01-01
      • 2012-05-01
      • 1970-01-01
      相关资源
      最近更新 更多