使用 Selenium Webdriver,抓取未显示在 innerhtml 中的数据

Using Selenium Webdriver, grabbing data not showing up in innerhtml

我正在尝试使用 selenium 从页面中获取文本数据。

正在打印 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' 下面还有很多内容没有出现在内部 html 打印输出

<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 (.00)</strong></a> </li> 
                    <li> <a href="#" onclick="addToCartCertified('D218101736', event)"><strong>Certified (.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. 与该定位器匹配的元素不止一个。要对此进行调查,请尝试在开发控制台中使用 $$("#divresults") 并确保它 returns 1. 如果它 returns 多于一个,则 运行 $$("#divresults")[0] 并使确保返回的元素是您想要的元素。如果是,请继续执行步骤 2。如果不是,您将需要找到一个更具体的定位器。如果您需要我们的帮助,您将需要为页面提供一个 link 或更多周围 HTML 所需的元素。
  2. 您需要添加一个等待时间,以便元素的内容可以完成加载。您可以等待像 #divresults strong 这样的定位器或任意数量的定位器来查找一些丢失的元素。您会等待它们可见(或至少存在)。有关详细信息和选项,请参阅 the docs