我试图扩大所有隐藏领域目前在任何特定的网页的网站,但我能够做一个又一个。此外,此代码片段并不适用于任何网站。
如何编写一个通用的代码,可以扩展任何网站的特定网页的所有隐藏字段?
示例网站的代码片段:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
service = Service(executable_path='chromedriver.exe')
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
driver.get('https://kpmg.com/xx/en/home/about/offices.html')
driver.find_element(By.XPATH, "//*[@id='country24-accordion']").click()
隐藏字段图像示例:
1条答案
按热度按时间dauxcl2d1#
这是一个有趣的问题。在继续之前,值得考虑一下是否可以使用任何其他替代方法来访问可扩展部分的内容。例如,您可以访问 accordion 部分中的文本,而无需扩展它们(尽管它可能需要格式化),例如:
好,继续:您正在访问的页面使用JavaScript来强制一次只展开一个可折叠部分。而且Selenium只能按顺序执行点击动作;它不允许你同时点击或展开所有的 accordion 部分。这是因为Selenium主要用于模拟用户操作,而不是像JavaScript那样更直接地操作DOM。
但是,您可以从Selenium中调用JavaScript来一次展开所有部分。如果每次展开和折叠accordion部分时都检查DOM中的accordion元素,您会注意到style属性发生了变化。
当您单击折叠 accordion 时,样式属性将更改为:
当您再次单击展开时,它将发生如下变化:
因此,你可以使用JavaScript修改上述属性值,使所有的accordion元素同时展开。您可以在浏览器控制台中尝试以下操作:
现在在Selenium中应用上述内容,您可以添加以下内容:
希望能帮上忙!