【问题标题】:How to get inner text of an element in Selenium?如何在 Selenium 中获取元素的内部文本?
【发布时间】:2017-10-11 12:57:56
【问题描述】:

我正在使用 DOM 节点

<input type = "form-control" type="text" data-bind="textInput: EnterpriseId" disabled autocomplete="off">

我怎样才能得到它的价值?因为element.getText() 不起作用并返回空白,所以我很挣扎。

任何建议都会有很大帮助。

【问题讨论】:

标签: java selenium selenium-webdriver


【解决方案1】:

试试这个

     WebElement element= driver.findElement(By.id("id value"));  
     String val=element.getAttribute("innerText")

【讨论】:

  • 您能分享您的 By 定位器吗?和你尝试过的代码
  • 老兄,你偏离了主题,为什么你需要这里的 By 定位器。我只是问当 DOM 中的该元素不存在 value 属性时如何获取输入 type="text" 值
  • 可能是您的定位器,而您编写代码 sn-p 的方式有一些错误。
  • 我得到:AttributeError: 'WebElement' object has no attribute 'getAttribute' 但这是在 python 中
  • 那是因为你使用的是 webdriver 的 java API 而不是 python 的 API
【解决方案2】:

我认为有问题的元素是&lt;input&gt; 元素,因此您可以像这样使用element.getAttribute(String attribute) 方法:

String value = element.getAttribute("value");

【讨论】:

  • 我可以在这个元素标签中看到没有值属性
  • 好的,对于给定的元素&lt;input type = "form-control" type="text" data-bind="textInput: EnterpriseId" disabled autocomplete="off"&gt;,您到底想掌握什么?你能分享一下元素的截图吗?
  • 我无法获取屏幕截图,这是在一个输入文本字段中,其中包含一个值,但 DOM 未在此处显示该值。所以我无法获取输入字段的文本
【解决方案3】:

这个输入标签被禁用,因此element.getText() 返回空白值。 请改用element.getAttribute("textContent")。希望这会奏效。

【讨论】:

    【解决方案4】:

    您在寻找输入文本的占位符吗?因为你可以试试

    element.getAttribute("placeholder");
    

    【讨论】:

      【解决方案5】:

      你可以去你的浏览器->打开开发者工具->检查你想从中获取属性的元素->点击Properties->检查该值是否在InnerText

      然后按照上面cmets中的方法进行操作:

      element_locator.get_attribute('InnerText')
      

      【讨论】:

        【解决方案6】:

        这有点晚了,但它可能对正在寻找类似解决方案的其他人有所帮助: 它确实有效,因为我已经对其进行了多次测试:

        <input type = "form-control" type="text" data-bind="textInput: EnterpriseId" disabled autocomplete="off">
        

        在您的示例中,您没有任何 innerText。因此,您只能使用现有属性获取前面提到的属性。在你的情况下: 类型、数据绑定、EnterpriseId 和自动完成。由于未创建此属性,因此不会有任何值。

        如果你想得到一个现有的,这应该没问题:

        String example= driver.findElement(ByLocator(("")).getAttribute("any attribute of your input"); 
        System.out.println(example);
        

        【讨论】:

          【解决方案7】:

          正如其他人所建议的,HTML 的 input 节点没有文本属性,因为它们可以在 value 属性中以多种格式存储数据。 这可以在HTML input API specification 中很容易地看到,其中form control 可以是 radiodatefile upload 类型> 还有更多。

          因此,在您的具体情况下,我建议您检查webdriver 的API 以获取能够检索value 属性的方法。

          【讨论】:

            【解决方案8】:

            有完全相同的问题!这篇文章为我解决了这个问题: How can I get the current contents of an element in webdriver 我用过:

            element = driver.find_elements_by_xpath(
            '//button[@class="size-grid-dropdown size-grid-button"]')
            element.text
            

            【讨论】:

            • 你为什么要发布一个 python 答案来回答一个明显的 java 问题?即使您说根本不清楚,其余答案都是为 java 编写的...
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-05-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-09-01
            • 1970-01-01
            • 2016-08-01
            相关资源
            最近更新 更多