Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 尝试单击网页中的所有HTML元素_Python_Python 3.x - Fatal编程技术网

Python 尝试单击网页中的所有HTML元素

Python 尝试单击网页中的所有HTML元素,python,python-3.x,Python,Python 3.x,我使用Selenium和Beauty Soup在一个网页中单击并展开所有切换元素。我的代码看起来像这样 from selenium import webdriver import os chromedriver = "C:\Users\rs\Downloads\chromedriver" os.environ["webdriver.chrome.driver"] = chromedriver driver = webdriver.Chrome(chromedriver) url='http://

我使用Selenium和Beauty Soup在一个网页中单击并展开所有切换元素。我的代码看起来像这样

from selenium import webdriver
import os
chromedriver = "C:\Users\rs\Downloads\chromedriver"
os.environ["webdriver.chrome.driver"] = chromedriver
driver = webdriver.Chrome(chromedriver)
url='http://www.coprporate-site.com'
driver.get(url)
driver.find_element_by_class_name('next').click()
我猜应该是这样的。默认情况下,项目如下所示:

<pan-icon class="a6z-dynamic-tree-node-toggle a6z-dynamic-tree-node-toggle-collapsed" size="treeCtrl.nodeArrowIconSize" icon="sort-descending" role="button"> </pan-icon>
from selenium import webdriver
import os
chromedriver = "C:\Users\rs\Downloads\chromedriver"
os.environ["webdriver.chrome.driver"] = chromedriver
driver = webdriver.Chrome(chromedriver)
url='http://www.coprporate-site.com'
driver.get(url)
for element in driver.find_elements_by_class_name('a6z-dynamic-tree-node-toggle-collapsed'):
    element.click()
每个对象旁边都有一个小三角形。我试图循环浏览所有处于“切换折叠”状态的项目,并将每个项目更改为“切换”。我认为代码应该如下所示

<pan-icon class="a6z-dynamic-tree-node-toggle" size="treeCtrl.nodeArrowIconSize" icon="sort-descending" role="button"> </pan-icon>

我如何循环使用所有这些特定的HTML元素(如上所述),并将每个元素从“toggle collapsed”更改为“toggle”?TIA.

Selenium的WebDriver包有几个允许您获取DOM中所有元素的组件。其中一种方法是通过类名称查找元素。循环遍历每个元素并将其展开,理想情况下,就像人类用户通过单击所做的那样。因此,您的代码可能如下所示:

<pan-icon class="a6z-dynamic-tree-node-toggle a6z-dynamic-tree-node-toggle-collapsed" size="treeCtrl.nodeArrowIconSize" icon="sort-descending" role="button"> </pan-icon>
from selenium import webdriver
import os
chromedriver = "C:\Users\rs\Downloads\chromedriver"
os.environ["webdriver.chrome.driver"] = chromedriver
driver = webdriver.Chrome(chromedriver)
url='http://www.coprporate-site.com'
driver.get(url)
for element in driver.find_elements_by_class_name('a6z-dynamic-tree-node-toggle-collapsed'):
    element.click()
如果需要检查类名本身是否包含“toggle collapsed”子字符串,可以在xpath中使用find_elements_by_xpath和contains属性,例如

for element in driver.find_elements_by_xpath(r"\\*[contains(@class, 'toggle-collapsed')]"):
    element.click()