【问题标题】:How to take text from an HTML element which uses a custom attribute?如何从使用自定义属性的 HTML 元素中获取文本?
【发布时间】:2013-11-20 14:19:05
【问题描述】:

我正在开发 Selenium 框架 2.0 Web 驱动程序,我想从具有数据自动化 ID 等属性的跨度中获取价值。 HTML代码如下

<span data-automation-id="SEL_ERR">
  Error Description
</span>

现在我想读取具有属性 data-automation-id 设置为 SEL_ERR 的 in span 文本。

有人可以帮我修复代码吗,因为我已经尝试了下面的代码,但没有成功。

driver.findElement(By.tagName("span")).getAttribute("data-automation-id");

【问题讨论】:

    标签: testing selenium selenium-webdriver automated-tests


    【解决方案1】:

    很简单,真的。您目前在整个文档中获得非常 first span

    你怎么知道那是不是你想要的?

    见面,.findElements()。它不会获取满足定位器的第一个元素,而是会为您提供满足条件的每个元素的列表。

    你没有分享太多的 HTML,所以我不知道这是否是一个独特的元素。

    但是,您有两种方法:

    1) 使用.findElements 获取所有 span 元素,然后将其过滤到具体具有属性data-automation-id 且值为SEL_ERR 的元素

    或(推荐):

    2) 将 .findElement 与专门针对 1) 中讨论的元素的选择器一起使用...如果 Selenium 找不到它,使用更有针对性的选择器,那么您就知道它不存在。

    driver.findElement(By.cssSelector("span[data-automation-id='SEL-ERR']"));
    

    或:

    3) 2) 的修改。如果 Selenium 找不到它,它会抛出异常。例外是昂贵的。您可以改用.findElements(在 1 中提到),如果找不到您要查找的元素,它将简单地返回一个空列表:

    driver.findElements(By.cssSelector("span[data-automation-id='SEL-ERR']")).size() != 0;
    

    【讨论】:

      【解决方案2】:

      我正在使用 selenium、jquery 和 javascript 的元素。

      我有不同的属性属于一个没有 ID 或名称的 botton,只有 data-automation-id,如下例所示:

      <button type="button" 
              data-automationid="FieldRenderer-name" 
              data-selection-invoke="true" 
              class="ms-Link nameField_f59ebb65 clickable_f59ebb65 root-203" 
              title="BD Operacion">BD Operacion</button>
      

      数据仓库

      如您所见,名称 data-automationid 重复

      我如何访问该元素?

      这不起作用,是我最接近的

      driver.FindElement(By.CssSelector("//button[@data-automation-id='FieldRenderer-name'])[1]")).Click();
      

      【讨论】:

        猜你喜欢
        • 2021-07-20
        • 2022-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-13
        • 1970-01-01
        • 2021-11-26
        相关资源
        最近更新 更多