Python 3.x 隐藏<;p>;selenium python中单击()按钮后不显示文本元素
我在学硒。我试图检索隐藏的元素,但即使单击该元素,我也无法看到它。我已经尝试了各种答案,在点击按钮以显示隐藏文本元素后访问隐藏文本。我正试图挑选在点击“阅读更多”后出现的附加段落 使用以下示例,我尽可能地单击,但仍然没有显示文本: 我已手动检查源代码以查看前后元素: 在“阅读更多”之前,请单击: 我使用以下方法来了解单击是否有效,元素是否可见,但问题是我查看的类名与其他类名相同,因此我得到了多个令人困惑的结果Python 3.x 隐藏<;p>;selenium python中单击()按钮后不显示文本元素,python-3.x,selenium,selenium-chromedriver,Python 3.x,Selenium,Selenium Chromedriver,我在学硒。我试图检索隐藏的元素,但即使单击该元素,我也无法看到它。我已经尝试了各种答案,在点击按钮以显示隐藏文本元素后访问隐藏文本。我正试图挑选在点击“阅读更多”后出现的附加段落 使用以下示例,我尽可能地单击,但仍然没有显示文本: 我已手动检查源代码以查看前后元素: 在“阅读更多”之前,请单击: 我使用以下方法来了解单击是否有效,元素是否可见,但问题是我查看的类名与其他类名相同,因此我得到了多个令人困惑的结果 elements2 = driver.find_elements_by_xpath(
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("")
结果:
外包装
最大高度:0px;溢出:隐藏;
假的
外包装
最大高度:0px;溢出:隐藏;
假的
外包装
最大高度:0px;溢出:隐藏;
假的
外包装
最大高度:0px;溢出:隐藏;
假的
外包装
最大高度:0px;溢出:隐藏;
假的
外包装
最大高度:0px;溢出:隐藏;
假的
外包装
最大高度:150像素;溢出:隐藏;
真的
外包装
最大高度:0px;溢出:隐藏;
假的
外包装
溢出:可见;
真的
外包装
溢出:可见;
真的
外包装
最大高度: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)
我只想检索相关文本。当您使用
驱动程序单击时,是否看到div展开。按类名称(“list-deet\u\u desc-b”)查找元素。单击()?如果没有,请尝试使用xpath//button[@class='button is outline list-deet\uu desc-b']
或css.button.is outline.list-deet\uu desc-b
单击按钮。谢谢,我刚才尝试了xpath选项,但仍然只给出了非隐藏段落。你能告诉我你所说的扩展div是什么意思吗?你的意思是运行直到点击,然后在源代码中检查div是否扩展?我不熟悉这个,所以不确定。
您是否看到这个div的类名,因为封装的内容已展开
,还是仅封装的内容
。我相信如果单击成功,则类名将从封装内容
更改为封装内容展开
。还请确保使用此aab_elem=driver更改代码以获取值。通过xpath(“//div[@class='encased-content is expanded']”)查找元素
,并且不确定为什么要使用find_elements
而只是使用find_element
并直接获取文本。因为文本将获取所有文本
将从所有子级获取文本。所以你不必为每一个都使用。只需打印(driver.find_element_by_xpath(“//div[@class='encased-content is expanded'])text())
,除非有多个元素具有相同的类名。谢谢@supputuri,我已根据您的反馈更新了我的描述。我使用了多个元素,因为有多个段落,但它们没有显示。描述是否能更好地说明我做错了什么?当您使用驱动程序单击时,是否看到div展开。按类名称(“list-deet\u\u desc-b”)查找元素。单击()?如果没有,请尝试使用xpath//button[@class='button is outline list-deet\uu desc-b']
或css.button.is outline.list-deet\uu desc-b
单击按钮。谢谢,我刚才尝试了xpath选项,但仍然只给出了非隐藏段落。你能告诉我你所说的扩展div是什么意思吗?你的意思是运行直到点击,然后在源代码中检查div是否扩展?我不熟悉这个,所以不确定。
您是否看到这个div的类名,因为封装的内容已展开
,还是仅封装的内容
。我相信如果单击成功,则类名将从封装内容
更改为封装内容展开
。还请确保使用此aab_elem=driver更改代码以获取值。通过xpath(“//div[@class='encased-content is expanded']”)查找元素
,并且不确定为什么要使用find_elements
而只是使用find_element
并直接获取文本。因为文本将获取所有文本
将从所有子级获取文本。所以你不必为每一个都使用。只需打印(driver.find_element_by_xpath(“//div[@class='encased-content is expanded'])text())
,除非有多个元素具有相同的类名。谢谢@supputuri,我已根据您的反馈更新了我的描述。我使用了多个元素,因为有多个段落,但它们没有显示。描述是否能更好地说明我做错了什么?
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("")
aab_elem = driver.find_elements_by_class_name("encased_content")
for po in aab_elem:
print(po.text)
ps = driver.page_source
print(ps)