如何在Selenium中获取元素的内部文本?

nkkqxpd9  于 2022-11-24  发布在  其他
关注(0)|答案(9)|浏览(155)

我正在使用DOM节点:

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

我怎么才能得到它的值呢?我很挣扎,因为element.getText()不起作用,返回一个空白。

kb5ga3dv

kb5ga3dv1#

试试看:

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

mutmk8jj2#

我假设所讨论的元素是元素,因此您可以使用element.getAttribute(String attribute)方法,如下所示:

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

flmtquvp3#

input 标记被禁用,因此element.getText()返回空值。
请改用element.getAttribute("textContent")

l7wslrjt

l7wslrjt4#

您可能正在查找输入文本的占位符,因为您可能尝试:

element.getAttribute("placeholder");
bz4sfanl

bz4sfanl5#

您可以进入浏览器→打开开发者工具→检查您想要获取属性的元素→点击 * 属性 * →检查该值是否在InnerText中。
然后按照前面的注解中提到的那样做:

element_locator.get_attribute('InnerText')
czfnxgou

czfnxgou6#

我也遇到了同样的问题!这篇文章为我解决了这个问题:***
我用了:

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

os8fio9y7#

正如其他人所建议的,HTML的input节点没有text属性,因为它们可以在value属性中存储多种格式的数据。
在HTML input API规范中可以很容易地看到这一点,其中form control可以是 radiodatefile upload 等类型。
因此,在您的特定情况下,我建议您检查webdriver的API,以查找能够检索value属性的方法。

vlf7wbxs

vlf7wbxs8#

作为在Selenium中评估元素的innerText的额外好处:

wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("yourEl")));
wait.until(ExpectedConditions.attributeToBe(By.id("yourEl"), "innerText", yourValue));

文件:* 目标属性 *

nc1teljy

nc1teljy9#

我已经测试过几次了,它确实有效:

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

在您的示例中,您没有任何innerText。因此,您只能使用现有属性获取前面提到的属性。在您的示例中:type、data-bind、EnterpriseId和autocomplete。由于未创建此属性,因此不会有值。
如果您只想获得现有的,这应该是好的:

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

相关问题