【问题标题】:Finding element using attribute ignoring case使用属性忽略大小写查找元素
【发布时间】:2017-01-24 12:30:28
【问题描述】:

有没有办法使用不区分大小写的属性来查找元素?

想一想,我想通过这样的标题来查找元素:

driver.findElement(By.cssSelector("input[title='This is a Test Title']")).sendKeys("Test");

但标题文本的更改不会影响我的WebElement

【问题讨论】:

  • 试试css3选择器[attr*=value],这会选择所有包含value子字符串的元素,在你的情况下试试input[title="itle"],这是一个区分大小写的小方法:)
  • 对不起@VladNeacsu,我的意思是整个标题文本(这是一个测试标题)。
  • 我刚刚测试过。在 HTML 中有一些不区分大小写的属性(例如 ID 和 Classes,但它们是有意义的),但不幸的是 title 不是:( jsfiddle.net/8ou7aw3a/1

标签: java selenium selenium-webdriver css-selectors


【解决方案1】:

您可以通过 xpath 来实现这一点。看下面的例子。

driver.findElement(By.xpath(".//input[translate(@title, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz') = 'this is my title']")).sendKeys("Test");

上面的 xpath 会将所有大写字母从标题转换为小写,并检查它是否等于给定的值。

【讨论】:

  • 谢谢,它有效。但是,单引号应该用于小写字母。 driver.findElement(By.xpath(".//input[translate(@title, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz') = '这是我的标题']")).sendKeys("Test");
  • 有没有 CSS 方法来做同样的事情? @Sudharsan
【解决方案2】:

可以在值后使用字符 i 或 I 来定位忽略属性值区分大小写的元素。

"input[title='This is a Test Title'] i")

您可以参考:http://pragmatictestlabs.com/2021/01/05/mastering-css-for-selenium-test-automation-2/

【讨论】:

    【解决方案3】:

    我发现,css-selectors 忽略了这种情况。所以,也许你可以先选择一些父元素,然后通过父元素选择目标元素。

    【讨论】:

      【解决方案4】:

      首先选择元素

      WebElement element=driver.findElement(By.cssSelector("input[title='This is a Test Title']"));
      

      第二次获得子元素

      WebElement subElement=element.findElement(By.tagName("Your Tag Here").attr("Your Attribute"));
      

      终于

      subElement.sendKey("Test");
      

      【讨论】:

        猜你喜欢
        • 2019-10-21
        • 1970-01-01
        • 1970-01-01
        • 2021-11-12
        • 1970-01-01
        • 1970-01-01
        • 2012-12-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多