Использование Selenium Webdriver, получение данных, не отображаемых в innerhtml - PullRequest
0 голосов
/ 21 мая 2018

Я пытаюсь использовать селен для получения текстовых данных со страницы.

Печать атрибутов html:

element = driver.find_element_by_id("divresults")

Результаты:

print(element.get_attribute('innerHTML'))

<div id="divDesktopResults"> </div>

Результаты:

print(element.get_attribute('outerHTML'))

<div id="divresults" data-bind="html:resultsContent"><div id="divDesktopResults"> </div></div>

Попытка захвата этого элемента

Результаты:

driver.find_element_by_css_selector("span[class='glyphicon glyphicon-tasks']")


Message: no such element: Unable to locate element: {"method":"css selector","selector":"span[class='glyphicon glyphicon-tasks']"}

Этот код при копировании из браузера.Ниже «divresults» есть гораздо больше, которые не отображаются в innerhtml распечатке

<div id="divresults" data-bind="html:resultsContent">
    <div> 
        <div class="row" style="font-size:8pt;"> 
            <a data-toggle="tooltip" style="text-decoration:underline" href="#pdfviewer?ID=D218101736">  
                <strong>D218101736 </strong>  
                <span class="glyphicon glyphicon-new-window"></span> 
            </a> 
        <div class="btn-group" style="font-size:8pt;margin-left:10px;" id="btnD218101736">   
            <span style="display:none;font-size:8pt;" id="lblD218101736"> Added To Cart</span> 
            <button type="button" style="font-size:8pt;" class="btn btn-primary dropdown-toggle" data-toggle="dropdown"> Add To Cart 
                <span class="caret"></span> 
            </button> 
                <ul class="dropdown-menu" role="menu"> 
                    <li> <a href="#" onclick="addToCart('D218101736', event)"><strong>Regular ($7.00)</strong></a> </li> 
                    <li> <a href="#" onclick="addToCartCertified('D218101736', event)"><strong>Certified ($12.00)</strong></a> </li> 
                </ul> 
        </div>  
    </div> <br> 

    <ul class="nav nav-tabs compact"> 
        <li class="active"> 
            <a data-toggle="tab" href="#D218101736_Doc"> 
                <span class="glyphicon glyphicon-file"></span>  
                <span>Doc Info</span> 
            </a> 
        </li> 
        <li class="hidden-xs"> 
            <a data-toggle="tab" href="#D218101736_Thumbnail"> 
                <span class="glyphicon glyphicon-th-large"></span>  
                <span>Thumbnail</span>
            </a> 
        </li> 
       ....

Как получить данные ниже divresults в экземпляре?

1 Ответ

0 голосов
/ 22 мая 2018

Я предполагаю, что это одна из двух вещей:

  1. Существует более одного элемента, который соответствует этому локатору.Чтобы исследовать это, попробуйте использовать $$("#divresults") в консоли разработчика и убедитесь, что он возвращает 1. Если он возвращает более одного, запустите $$("#divresults")[0] и убедитесь, что возвращаемый элемент - тот, который вам нужен.Если это так, перейдите к шагу 2. Если это не так, вам нужно найти более конкретный локатор.Если вам нужна наша помощь, вам нужно будет предоставить ссылку на страницу или более окружающего HTML-кода на нужный элемент.
  2. Вам нужно добавить ожидание, чтобы содержимое элемента могло завершить загрузку.Вы можете подождать, пока локатор типа #divresults strong или любое количество локаторов не найдет некоторые элементы, которые отсутствовали.Вы бы подождали, пока они будут видны (или, по крайней мере, присутствуют).См. документы для получения дополнительной информации и опций.
...