【发布时间】:2021-07-07 15:01:56
【问题描述】:
当我运行它时,它只能向下滚动一次,并抛出“消息:元素不可交互”错误。 (它应该滚动两次)。当我尝试循环运行它(尝试并忽略错误)并手动滚动它时,它会不断将我推回到特定位置。但这很奇怪,因为我在这里使用箭头键,而不是移动到元素:
ActionChains(driver).move_to_element(driver.sl.find_element_by_id('my-id')).perform()
我尝试过:让所有内容有更多时间在睡眠状态下加载,将鼠标悬停在元素上并单击它以使其可交互,使用其他方法滚动,例如这个和其他类似的方法:driver.execute_script("window.scrollTo(0, Y)")
我现在很迷茫,不知道该怎么办
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
from datetime import date
from datetime import datetime
from time import sleep
from random import *
import random, json, selenium, os.path, os
driver = webdriver.Chrome('/Users/apple/Downloads/chromedriver')
driver.maximize_window()
driver.get('https://instagram.com')
sleep(7)
username_form = driver.find_element_by_xpath('/html/body/div[1]/section/main/article/div[2]/div[1]/div/form/div/div[1]/div/label/input')
username_form.clear()
username_form.send_keys('ENTER INSTA USER HERE')
password_form = driver.find_element_by_xpath('/html/body/div[1]/section/main/article/div[2]/div[1]/div/form/div/div[2]/div/label/input')
password_form.clear()
password_form.send_keys('ENTER INSTA PASS HERE')
button_click = driver.find_element_by_xpath('/html/body/div[1]/section/main/article/div[2]/div[1]/div/form/div/div[3]/button')
try:
button_click.click()
except:
driver.execute_script("arguments[0].click();", button_click)
sleep(4)
driver.get('https://instagram.com/p/CQ_sfAeFl5s/')
sleep(4)
like_meter = driver.find_element_by_class_name('zV_Nj')
like_meter.click()
sleep(1)
try:
scroll_zone = driver.find_element_by_xpath('/html/body/div[5]/div/div/div[2]/div/div')
except:
scroll_zone = driver.find_element_by_xpath('/html/body/div[4]/div/div/div[2]/div/div')
scroll_zone.click()
sleep(0.5)
hover = ActionChains(driver).move_to_element(scroll_zone)
hover.perform()
sleep(0.5)
scroll_zone.send_keys(Keys.ARROW_DOWN)
scroll_zone.send_keys(Keys.ARROW_DOWN)
【问题讨论】:
-
Q1:哪一行和元素抛出“不可交互”? Q2:你为什么希望它滚动两次?我在您的代码中只看到一个 move_to_element。
-
你试过
driver.execute_script("arguments[0].scrollIntoView();", scroll_zone)吗? -
如果他们回答了您的问题,请不要忘记接受答案。
-
@ConradAlbrecht 当我第一次滚动时发生不可交互错误:
scroll_zone.send_keys(Keys.ARROW_DOWN),但由于某些奇怪的原因它仍然滚动。另外, move_to_element 只是悬停,这是我尝试使其可交互的。是的,@Burakudo 我试过了 -
@Burakudo nvm 在我再次尝试后再次工作,非常感谢
标签: python-3.x selenium web-scraping selenium-chromedriver