硒python

时间:2019-07-05 19:45:55

标签: python-3.x selenium selenium-chromedriver

我正在学习硒。我正在尝试检索隐藏的元素,但是即使单击它也无法看到该元素。单击按钮以显示隐藏的文本元素后,我已经尝试了各种答案来访问隐藏的文本。我正在尝试点击网站上的“阅读更多”后出现的其他段落。

使用以下示例,我可以单击,但仍然没有出现文本:

How to click on a hidden button with selenium through Python

我已经手动检查了源代码以查看元素之前和之后:

在“阅读更多”之前,单击:

<div name="fish-deets__desc" class="fish-deets__desc">
  <h2 class="fish-deets__desc-header">trip desc</h2>
    <div class="encased__wrapper" style="max-height:150px;overflow:hidden">
      <div class="encased-content">
        <div>
          <div>
            <h4 class="fish-deets__desc-head">Top 10 Fishing Trips</h4>
            <p>Fishing trip paragraph 1</p>
            <p>Fishing trip paragraph 2</p>
          </div>
        </div>
      <div class="encased__gradient">
    </div>
  </div>
</div>
<div class="fish-deets__desc-container">
  <button class="button is-outline fish-deets__desc-button" type="button">Read More</button>
</div>

在这里您可以看到其他第3、4、5、6段丢失了。只有第1段和第2段存在。

“阅读更多”后,单击:

<div name="fish-deets__desc" class="fish-deets__desc">
  <h2 class="fish-deets__desc-header">trip desc</h2>
   <div class="encased__wrapper" style="overflow: visible;">
     <div class="encased-content is-expanded">
       <div>
         <div>
           <h4 class="fish-deets__desc-head">Top 10 Fishing Trips</h4>
           <p>Fishing trip paragraph 1</p>
           <p>Fishing trip paragraph 2</p>
           <p>Fishing trip paragraph 3</p>
           <p>Fishing trip paragraph 4</p>
           <p>Fishing trip paragraph 5</p>
           <p>Fishing trip paragraph 6</p>
           <div class="fish-deets__desc-key-features">
             <div class="fish-deets__key-features">
              <div class="fish-deets__key-features--item fish-deets__key-features--trip-type">
                <div class="fish-deets__key-features--key">trip type</div>
                <div class="fish-deets__key-features--value">TopSpots</div>
              </div>
             <div class="fish-deets__key-features--item fish-deets__key-features--land-area">
               <div class="fish-deets__key-features--key">Tools</div>
               <div class="fish-deets__key-features--value">
                 <span>Fish food</span>
               </div>
              </div>
            </div>
           </div>
         </div>
       </div>
     </div>
   </div>
   <div class="fish-deets__desc-container">
     <button class="button is-outline fish-deets__desc-button" type="button">Read Less</button>
  </div>
</div>

您可以看到,在手动单击“阅读更多”之后,还有其他段落,按钮变为“阅读较少” 我不确定是否要使用代码正确地重新创建它。

这是我的代码:

我已经尝试过点击:

driver.find_element_by_class_name('list-deet__desc-b').click()

我使用以下方法来了解单击是否有效并且元素可见,但是问题是我查看的类名与其他类名相同,因此得到了多个令人困惑的结果。

elements2 = driver.find_elements_by_xpath("//div[@class='encased__wrapper']")

for element2 in elements2:
    print(element2.get_attribute("class"))
    print(element2.get_attribute("style"))
    print(element2.is_displayed())
    print("")

结果:

装箱 max-height:0px;溢出:隐藏; 错误

装入__包装器 max-height:0px;溢出:隐藏; 错误

装入__包装器 max-height:0px;溢出:隐藏; 错误

装入__包装器 max-height:0px;溢出:隐藏; 错误

装入__包装器 max-height:0px;溢出:隐藏; 错误

装入__包装器 max-height:0px;溢出:隐藏; 错误

装入__包装器 最大高度:150像素;溢出:隐藏; 是

装入__包装器 max-height:0px;溢出:隐藏; 错误

装入__包装器 溢出:可见; 是

装入__包装器 溢出:可见; 是

已装入__包装器 max-height:0px;溢出:隐藏; 真正

结果令人困惑,因为有许多同名的类,而且我可能导航不正确。而且在单击前后我似乎得到了相同的结果,所以我想我也在单击错误的东西。

然后从我尝试过的未隐藏内容中提取文本:

aab_elem  = driver.find_elements_by_class_name("encased_content")
for po in aab_elem:
    print(po.text)

结果不会产生隐藏的文本。这只会在单击“阅读更多”按钮之前打印出可见的第一段。

仅当通过以下方式检索整个源时,隐藏文本才可见:

ps = driver.page_source
print(ps)

我只想检索相关文本。

0 个答案:

没有答案