我可以使用selenium web驱动程序成功登录,但我不知道如何访问下一页的框架。我已经尝试设置新框架,但它没有找到该元素,因为我认为它正在查看登录页面上的元素而不是后面的页面。这是登录成功后的URL。 https://homeaccess.katyisd.org/HomeAccess/Classes/Classwork
Path of frame on page AFTER login page
browser = webdriver.Chrome(executable_path = path_to_chromedriver)
url = "https://homeaccess.katyisd.org/HomeAccess/Account/LogOn?ReturnUrl=%2fHomeAccess"
browser.get(url)
browser.find_element_by_id('LogOnDetails_UserName')
browser.find_element_by_id('LogOnDetails_Password')
browser.find_element_by_id('LogOnDetails_UserName').clear()
browser.find_element_by_id('LogOnDetails_Password').clear()
browser.find_element_by_id('LogOnDetails_UserName').send_keys('******')
browser.find_element_by_id('LogOnDetails_Password').send_keys('******')
登录后,这一切都在页面上
frame = browser.find_element_by_xpath('//*[@id="sg-legacy-iframe"]') //prints no such element found
browser.switch_to_frame(frame)
browser.find_element_by_xpath('//*[@id="SignInSectionContainer"]/div[2]/button').click()
答案 0 :(得分:0)
尝试等待框架出现:
frame = WebDriverWait(browser, 10).until(EC.frame_to_be_available_and_switch_to_it((By.ID, 'sg-legacy-iframe')))
答案 1 :(得分:0)
点击登录后,请等待一段时间加载页面。
You can use WebDriverWait for waiting for required element
if above one fails generally in java in will go for Thread.sleep(5000);
根据提供的HTML代码,如果id失败,您可以尝试通过其他定位器切换到帧
driver.switchTo().frame("sg-legacy-iframe"); //by providing id
driver.switchTo().frame(driver.findElement(By.xpath("//div[@id='MainContent/iframe"))); //by providing xpath
谢谢你, 穆拉利