首页 > 解决方案 > 使用 Selenium 滚动

问题描述

我在向下滚动到第二个网页的末尾时遇到了一些问题。第一个滚动工作正常,第二个不会运行。

这个问题似乎发生在第 33 和 34 行

请参阅下面的代码行:

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
from selenium.webdriver.common.keys import Keys

def main():
    n = 1
    # LMS -> PSYC1101 -> Quiz
    driver = webdriver.Chrome("/usr/local/bin/chromedriver")
    driver.get("https://lms.uwa.edu.au/webapps/portal/execute/tabs/tabAction?tab_tab_group_id=_1_1")
    window_before = driver.window_handles[0]
    username = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID,"login-user"))).send_keys("username")
    password = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID,"login-pass"))).send_keys("password")
    login = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID,"form_button_0"))).click()
    time.sleep(10)
    units = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH,"/html/body/div[4]/table/tbody/tr/td/div/div[2]/table/tbody/tr/td[2]/a/span"))).click()
    psych = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH,"/html/body/div[5]/div/div/div/div/div/div/div/div[2]/div/div[2]/div/div[2]/ul/li[4]/a"))).click()
    page = driver.find_element_by_tag_name("html")
    page.send_keys(Keys.END)
    time.sleep(1)
    quizzes = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH,"/html/body/div[5]/div[2]/nav/div/div[2]/div[1]/div[2]/ul/li[22]/a/span"))).click()

    # Quiz One -> Begin -> Scroll -> Continue -> Sumbit -> Submit2 -> View Results
    quizOne = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH,"/html/body/div[5]/div[2]/div/div/div/div/div[2]/ul/li[2]/div[1]/h3/a/span"))).click()
    time.sleep(1)
    begin = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH,"/html/body/div[1]/div/div/div/div[4]/div/div[2]/div/div[1]/div[17]/button"))).click()

    window_after = driver.window_handles[0]
    driver.switch_to.window(window_after)

    page = driver.find_element_by_tag_name("html")
    page.send_keys(Keys.END)
    #driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

    Continue = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH,"/html/body/div/div/main/div[5]/button[1]"))).click()
    submit = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH,"/html/body/div/header/div/div/button[2]"))).click()
    submit2 =  WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH,"/html/body/div/ic-modal[2]/ic-modal-main/div[2]/button[2]"))).click()       
    viewResults = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH,"/html/body/div/ic-modal[3]/ic-modal-main/div/button"))).click()


main()

标签: pythonseleniumselenium-webdriver

解决方案


推荐阅读