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

时间:2015-05-13 01:18:01

标签: python selenium webdriver

以下

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

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

element.text

返回一个空字符串(这是一个惊喜)。从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>

3 个答案:

答案 0 :(得分:7)

这是一种更简单的方法:

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

因此,您可以通过 get_attribute(' outerHTML ',' href ',' src '等执行类似的操作)方法。

答案 1 :(得分:4)

您可以将webelement传递给js代码

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

答案 2 :(得分:2)

innerText特定于IE。如果您需要跨平台字段,请使用textContent

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

element已经获得WebElement

顺便说一下,你说你在控制台试过这个:

$('.theelementclass').text

它不起作用,因为.text功能。它必须被称为。