给定一个 (python) selenium WebElement 我可以得到 innerText 吗?

Given a (python) selenium WebElement can I get the innerText?

以下

element = driver.execute_script("return $('.theelementclass')")[0]

找到我的元素(一个 div 只包含一些文本),但是:

element.text

returns 一个空字符串(这是一个惊喜)。从 Java 脚本控制台:

$('.theelementclass').text  # also (consistently) empty
$('.theelementclass').innerText  # YES! gets the div's text.

所以,我的问题是,鉴于我有一些 WebElement,我可以找到 innerText 吗? (无聊的原因,我想用找到的webelement来操作,而不是原始查询)。

我包括周围的 HTML。但是,我认为它没有用(因为找到了元素并且是唯一的)

<first-panel on-click="onClickLearnMore()" class="ng-isolate-scope">
  <div class="comp-onboarding-first-thought-panel">
    <div class="onboarding-text-container">
        <div class="theelementclass">
                Congratulations.
                You found the text is here!
        </div>
        <div class="button-cont">
            <div ng-click="onClickButton()">Learn more about The Thing</div>
        </div>
    </div>
</div>
</first-panel>

可以将webelement传给js代码

element = driver.find_element_by_css_selector('.theelementclass')
inner_text= driver.execute_script("return arguments[0].innerText;", element)

innerText 特定于 IE。如果你想要一个跨平台的字段,使用textContent:

driver.execute_script("return arguments[0].textContent", element)

element是已经得到的WebElement.

顺便说一句,你说你在控制台试过了:

$('.theelementclass').text

它不会工作,因为 .text 是一个 函数 。必须调用。

这里有一个更简单的方法:

element = driver.find_element_by_class_name('theelementclass')
text = element.get_attribute('innerText')

所以你可以用'outerHTML'、'href'、'src[=19 做类似的事情=]' 等 get_attribute() 方法。