登录selenium后如何访问页面元素?

时间:2016-05-06 00:17:42

标签: python selenium iframe

我可以使用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()

2 个答案:

答案 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

谢谢你, 穆拉利