python - Selenium Webdriver 在 xblock 中找不到元素
问题描述
我不知道这个问题是否有意义——我对 Python 和 Selenium 以及一般的编码都很陌生。
故事是我正在尝试自动化将 edX 课程网页保存为 HTML 的过程。我正在使用最新的 iPython 和 Webdriver。这是我到目前为止所做的:
from selenium import webdriver
driver = webdriver.Chrome(executable_path=r'/Users/Khoa_Ngo\bin\chromedriver\chromedriver.exe')
driver.get('https://courses.edx.org/login')
#logging in
driver.find_element_by_id('login-email').send_keys('EMAIL')
driver.find_element_by_id('login-password').send_keys('PASSWORD')
driver.find_element_by_xpath('//*[@type="submit"]').click()
#choosing course
driver.find_element_by_xpath('//*[@href="/courses/course-v1:Microsoft+DEV262x+1T2020a/course/"]').click()
我接下来要做的是将网页保存为 HTML,将其存储在某处,然后单击“下一步”继续下一个课程模块并重复。但我似乎无法找到按钮。这是我尝试过的:
driver.find_element_by_xpath('/html/body/div[3]/div[2]/div[2]/div[1]/section[1]/main/div/div/div[1]/button[2]').click()
driver.find_element_by_css_selector('#sequence_adf942ea-fcee-289c-a1f8-3c557ee5fb15 > div.sequence-nav > button.sequence-nav-button.button-next')
我不认为这个元素在 iframe 中。然而,它在某种“xblock”中。我不确定这将如何影响选择。
这是我保存的网页:https ://drive.google.com/drive/folders/1Zr6sGO0j-H-Tze_lBgkLnQXuQA0pxsWr?usp=sharing
这些信息是否足以回答我的问题?谢谢您的帮助!
解决方案
试试下面的 xpath :
wait = WebDriverWait(driver, 10)
wait.until(EC.element_to_be_clickable((By.XPATH, "//button[@class='sequence-nav-button button-next'][contains(.,'Next')]"))).click()
或者
wait = WebDriverWait(driver, 10)
wait.until(EC.element_to_be_clickable((By.XPATH, "//button[@class='sequence-nav-button-label'][contains(.,'Next')]")))
你也可以试试javascript click::
wait = WebDriverWait(driver, 10)
nextbutton= wait.until(EC.element_to_be_clickable((By.XPATH, "//button[@class='sequence-nav-button-label'][contains(.,'Next')]")))
driver.execute_script("arguments[0].click();", nextbutton)
注意:请在您的解决方案中添加以下导入
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
推荐阅读
- forms - ProcessCmdKey 不适用于双显示器
- python - 如何通过在python中添加同一列的2个不同行值的值来估算特定的行值
- python - 遍历两个列表,将一个列表与另一个列表进行比较并返回值
- xcode - iphone v14.4.2 和 xcode 12 的 Xcode 构建失败
- 2d - 如何在 2D 游戏中停止正在减速的物体?
- json - 将 Spring Data 与 PostgreSQL JsonB 类型属性一起使用
- typescript - 打字稿中的条件类型
- excel - 自更新计算字段
- html - 如何在 CSS 中的圆形图像上使用 box-shadow?
- javascript - Node.js - eventListener - 如何在触发事件时登录文件