我正在学习硒。我正在尝试检索隐藏的元素,但是即使单击它也无法看到该元素。单击按钮以显示隐藏的文本元素后,我已经尝试了各种答案来访问隐藏的文本。我正在尝试点击网站上的“阅读更多”后出现的其他段落。
使用以下示例,我可以单击,但仍然没有出现文本:
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)
我只想检索相关文本。