我正在重写这个使用旧版本Selenium的旧pyton脚本(https://github.com/muvvasandeep/BuGL/blob/master/Scripts/DataExtraction.py)。这个脚本的目的是从github的开源项目中提取开放和关闭的问题。我对python和Selenium都是新手。我很难重写它里面的一些东西。目前我正在努力让它工作:
repo_closed_url = [link.get_attribute('href') for link in driver.find_elements(By.XPATH,'//div[@aria-label="Issues"]').find_element(By.CLASS_NAME,'h4')]
上面的代码应该从github页面获取所有已关闭的问题链接,并将其存储在repo_closed_url数组中。但是我得到了AttributeError:“list”对象没有属性“find_element”错误。请帮助。
2条答案
按热度按时间pw136qt21#
我不确定这条代码行是否有效。
它使用
driver.find_elements(By.XPATH,'//div[@aria-label="Issues"]')
方法,然后尝试将find_element(By.CLASS_NAME,'h4')
应用于之前方法的输出。但是
driver.find_elements(By.XPATH,'//div[@aria-label="Issues"]')
返回一个web元素对象的列表,而find_element(By.CLASS_NAME,'h4')
只能应用于webdriver
或webelement
对象,不能应用于对象列表。该代码可以按照dm2所述进行重构
在本例中,
driver.find_elements(By.XPATH,'//div[@aria-label="Issues"]')
输出是web元素对象的列表,您使用for link in (output of)(driver.find_elements(By.XPATH,'//div[@aria-label="Issues"]'))
对此列表执行内联迭代,然后将.find_element(By.CLASS_NAME,'h4').get_attribute('href')
应用于先前接收到的链接列表中的每个link
元素eeq64g8w2#
find_elements
返回一个列表,而列表没有方法find_element
(根据错误消息)。您可以将
find_element
方法移动到link
:这看起来更像是您要做的事情,不是迭代单个元素,而是迭代
find_elements
方法中的元素列表。