你好,所以鉴于我已经导航到这个网站
https://uk.trustpilot.com/categories
我想使用inspect元素检索每个类别的标题,我注意到每个类别的标题都有一个h2标记
我的想法是使用一个EC条件来等待所有具有h2标记的元素的可见性,这将返回一个包含所有h2标记的列表,然后我可以调用getattribute(text)来获取文本
def select_catogory(self):
list = self.wait.until(EC.presence_of_all_elements_located((By.TAG_NAME, 'h2')))
print(len(list))
catogories = self.driver.find_elements(By.TAG_NAME,value ="h2")
for cat in catogories:
print(cat.get_attribute('text')
所有元素的presence_of_all_elements_located均未返回任何内容,并且与find_elements相同
)
我意识到我的主要问题是在我的循环中,我从来没有一个中断条件,所以它给出了一个陈旧的元素警告,我认为这是由这个函数引起的,谢谢帮助
def select_button_by_name(self, name_of_button: str):
"""
Navigates to the button in question and clicks on it
input: name_of_button (string)
"""
self.wait
buttons_by_href = self.driver.find_elements(By.XPATH,value ="//a[@href]") #finds all the href tags on the webpage
for button in buttons_by_href:
# Matches the attribute text to the provided button string
if button.get_attribute("text") == name_of_button:
#clicks on the button
button.click()
break
2条答案
按热度按时间frebpwbc1#
此SeleniumBase解决方案行之有效:
pip install seleniumbase
,然后运行python
或pytest
:输出为:
2izufjch2#
您可以在一行代码中使用Selenium和python来提取每个类别的标题,从而将WebDriverWait归纳为visibility_of_all_elements_located(),并且可以使用以下Locator Strategies之一:
get_attribute("textContent")
: