由于ElementNotInteractableException
而发生link.click()
。我了解这是因为硒无法找到要滚动的内容,但是我该如何解决?
def collect_page(self, page):
# navigate to page
self.browser.get(
'https://www.facebook.com/' + page + '/')
# Scroll down depth-times and wait delay seconds to load
# between scrolls
for scroll in range(self.depth):
# Scroll down to bottom
self.browser.execute_script(
"window.scrollTo(0, document.body.scrollHeight);")
# Wait to load page
time.sleep(self.delay)
print("before open")
# Once the full page is loaded, we can start scraping
with open(self.dump, "a+", newline='', encoding="utf-8") as save_file:
writer = csv.writer(save_file)
links = self.browser.find_elements_by_link_text("See more")
print("before for")
for link in links:
print("in for loop opening link")
link.click()
print("opening link")
posts = self.browser.find_elements_by_class_name(
"userContentWrapper")
poster_names = self.browser.find_elements_by_xpath(
"//a[@data-hovercard-referer]")
print("before count")
for count, post in enumerate(posts):
# Creating first CSV row entry with the poster name (eg. "Donald Trump")
analysis = [poster_names[count].text]
# Creating a time entry.
time_element = post.find_element_by_css_selector("abbr")
utime = time_element.get_attribute("data-utime")
analysis.append(utime)
# Creating post text entry
text = post.find_element_by_class_name("userContent").text
status = self.strip(text)
analysis.append(status)
# Write row to csv
print("writing")
writer.writerow(analysis)
答案 0 :(得分:1)
尝试使元素可点击,以便元素将被正确加载并能够进行交互。
for link in links:
print("in for loop opening link")
WebDriverWait(self.browser, 30).until(EC.element_to_be_clickable((By.LINK_TEXT,
"See more")))
link.click()
print("opening link")