Selenium Webdriver在xblock中找不到元素

问题描述 投票:0回答:1

我不知道这个问题是否还有意义-我对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

这些信息足以回答我的问题吗?谢谢您的帮助!

python html selenium
1个回答
0
投票

在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单击::

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
© www.soinside.com 2019 - 2024. All rights reserved.