繁体   English   中英

强制驱动程序在Python Selenium中更新到新页面

[英]Force driver to update to new page in Python Selenium

我正在尝试使用Selenium在Coursera的站点中导航,我在使用驱动程序识别登录后页面已更改时遇到了一些麻烦。以下是我正在使用的代码:

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

driver = webdriver.Firefox()
driver.get("https://www.coursera.org/?authMode=login")

# Target the user name input field
try:
    user = WebDriverWait(driver, 30).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, ".c-user-modal-controls > div:first-child"))
    )
except:
    print "[-] No joy..."
user.send_keys("email@gmail.com")

# Target the password input field
user.send_keys(Keys.TAB)
user.send_keys("password")

# submit the login form
login_button = driver.find_element_by_css_selector(".rc-LoginForm > form > button")
login_button.click()

# Choose Intro to Data Science with Python course
course = driver.find_element_by_css_selector(".rc-EnrollmentsList")
course.click()

这不起作用,告诉我无法找到该元素。 我尝试了很多解决方案,包括检查文档就绪状态是否等于“完成”,切换到新窗口,检查是否存在元素,以及检查标题是否已更改。 似乎没有什么工作,如果我打印页面源,它​​实际上是来自初始窗口加载的页面源,这就是为什么我认为上述方法都不起作用。

如何告诉Selenium我已切换到新页面并且需要更新其信息来源?

注意:我知道Coursera对网页抓取有非常严格的政策,所有材料仅用于非商业用途。 执行此任务的唯一目的是自动下载我已注册的课程的视频,以便稍后查看。

这似乎纯粹是一个等待问题。 您必须向脚本添加一些等待语句。虽然网站移动到下一页,但脚本仍然保留在上一页 - 这也发生在我身上。 只需在移动到下一页之前添加一个“Thread.sleep(2000)。如果有效,则添加标准的等待语句。增加秒数,以便找到问题。请注意,执行同一块的次数越多代码,加载所需的时间各不相同(大多数增加!)

因此,尝试睡眠声明并检查您是否在新页面上,然后您可以稍后对其进行标准化。 快乐的编码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM