2015-05-13 2 views
2

СледующаяУчитывая (python) selenium WebElement, я могу получить innerText?

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? (Для скучных причин я хочу работать с найденным веб-элементом, а не с исходным запросом).

Я включаю окружающий 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> 
+0

Можете ли вы добавить HTML-код, из которого вы хотите получить текст? – Richard

+0

работает ли с element.get_attribute ('innerText')? вы также можете попробовать с element.get_attribute ('innerHTML'). какой браузер вы используете (firefox, chrome и т. д.)? – dnlcrl

ответ

1

Вы можете передать webelement в JS код

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

innerText специфичен для IE. Если вы хотите поле кросс-платформенный, используйте textContent:

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

element это уже получено WebElement.

Кстати, вы сказали, что вы пробовали это в консоли:

$('.theelementclass').text 

Это не будет работать, потому что .text является функция. Это нужно назвать.

Смежные вопросы