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