在使用硒元素进行无限滚动时,去掉弹出窗口



我想在此页面上执行无限向下滚动:https://www.financialjuice.com/home

向下滚动后,会出现一个窗口(注册(,我需要删除它,这样向下滚动就会删除,但我做不到,我创建了这个代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
u = "https://www.financialjuice.com/home"
driver = webdriver.Chrome(executable_path=r"C:chromedriver.exe")
driver.get(url)
driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")    
driver.implicitly_wait(60) # seconds

print('start scrolling')
for i in range(5):
driver.find_element_by_css_selector('html').send_keys(Keys.END)
print("scroll", i)
time.sleep(5)
# the pop up window will appear after the 4th scroll
# the below code to try to click on the page to remove it
el=driver.find_elements_by_xpath('//*[@id="aspnetForm"]/div[3]/header/nav/div[2]/div/div[1]/div/a[1]/img[2]')[0]
action = webdriver.common.action_chains.ActionChains(driver)
# action.move_to_element_with_offset(el, 5, 5)
action.move_to_element_with_offset(el, 5, 0)
action.click()
action.perform()
### after remove it, I complete the scrolls:
for i in range(100):
driver.find_element_by_css_selector('html').send_keys(Keys.END)
print("scroll", i)
time.sleep(1)

我需要这个弹出窗口的解决方案,这样我就可以在这个网页上无限向下滚动

实现一种方法来检测popover是否存在并丢弃它。

def ignore_sign_up_popover():
sign_up = driver.find_elements_by_css_selector('#signup')
if len(sign_up) > 0 and sign_up[0].is_displayed():
TouchActions(driver).tap_and_hold(0, 0).release(0, 0).perform()

然后在每次迭代(滚动之前(上添加检查

for i in range(5):
ignore_sign_up_popover()
driver.find_element_by_css_selector('html').send_keys(Keys.END)
print("scroll", i)
time.sleep(5)

注意,您需要导入触摸操作:

from selenium.webdriver.common.touch_actions import TouchActions

w3c/chrome也有一个问题,如果我没记错的话,它会在touchAction中引发一个异常,在chrome端打开了一个错误

如前所述,您可以使用以下选项暂时禁用它:

options = webdriver.ChromeOptions()
options.add_experimental_option('w3c', False)
driver = webdriver.Chrome(options=options)

最新更新