2016-05-06 7 views
0

Ich kann erfolgreich mit dem Selenium-Web-Treiber anmelden, aber ich weiß nicht, wie Sie auf den Rahmen auf der nächsten Seite zugreifen. Ich habe versucht, den neuen Rahmen zu setzen, aber es findet dieses Element nicht, weil ich denke, dass es durch die Elemente auf der Anmeldeseite anstatt der Seite danach schaut. Dies ist die URL, nachdem die Anmeldung erfolgreich war. https://homeaccess.katyisd.org/HomeAccess/Classes/ClassworkWie auf Elemente der Seite nach dem Login selen zugreifen?

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('******') 

Das ist alles auf der Seite nach dem Login

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() 

Antwort

0

Versuchen zu warten Frame angezeigt werden:

frame = WebDriverWait(browser, 10).until(EC.frame_to_be_available_and_switch_to_it((By.ID, 'sg-legacy-iframe'))) 
+0

ich einen Fehler http bin immer: // puu. sh/oHUyF/81e555063f.png. Aber dieses Mal ist es kein solcher Fehler! – johnson

+0

Versuchen Sie immer noch, zum Rahmen zu wechseln? (zB 'browser.switch_to_frame (frame)') Sie müssen nicht, wie der Name schon sagt, "frame_to_be_available_and_switch_to_it" bereits tun, siehe https://seleniumhq.github.io/selenium/docs/api/py/webdriver_support/selenium .webdriver.support.expected_conditions.html: "Es wird erwartet, dass überprüft wird, ob der angegebene Frame verfügbar ist. Wenn der Frame verfügbar ist, wird der angegebene Treiber auf den angegebenen Frame gesetzt." –

0

Nach Klick auf Anmeldung durchführen bitte Warten Sie einige Zeit, um die Seite zu laden.

You can use WebDriverWait for waiting for required element 

    if above one fails generally in java in will go for Thread.sleep(5000); 

Per bereitgestellt HTML-Code können Sie versuchen, von anderen Locators Rahmen Schalt wenn id nicht

driver.switchTo().frame("sg-legacy-iframe"); //by providing id 

    driver.switchTo().frame(driver.findElement(By.xpath("//div[@id='MainContent/iframe"))); //by providing xpath 

danken Ihnen, Murali

Verwandte Themen