2015-12-19 78 views
0

我寫了一個成功登錄網站的腳本。但是,在登錄頁面更改後,URL保持不變。它不會重定向到我現在可以用來查找元素和填充表單的其他網址。用selenium成功登錄網頁後,無法使用新加載的頁面

下面是腳本:

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import Select 
from selenium.common.exceptions import NoSuchElementException 


driver = webdriver.Firefox() 
driver.implicitly_wait(10) 
base_url = "https://trakcarelabwebview.nhls.ac.za/trakcarelab/csp/logon.csp" 
verificationErrors = [] 
driver.get(base_url) 

##log into website by filling in username and password forms 
driver.find_element_by_id("USERNAME").send_keys("XXXX") 
driver.find_element_by_id("PASSWORD").send_keys("XXXX") 
driver.find_element_by_class_name("clsButton").click() 


## at this point the page chages and I am unable to find any of the new elements on the new page 

barcode = "11111111" 
driver.implicitly_wait(5) 
##driver.find_element_by_id("Clear").click() 
driver.find_element_by_id("SpecimenParam").send_keys(barcode) 
driver.find_element_by_id("Find").click() 

driver.quit() 

我不知道在所有我能得到硒使用新加載的網頁登錄後作爲其操作將被執行的新的一頁。

回答

1

硒不關心頁面或網址的變化。它僅在由驅動程序創建的瀏覽器實例中以及在該實例中呈現的任何內容中查找。

您必須查看您正在搜索的Web元素是否可以使用不同的定位器策略(id,類名,鏈接文本,xpath,css選擇器等)訪問。

如果網頁加載速度慢,使用顯式等待的元素:

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait # available since 2.4.0 
from selenium.webdriver.support import expected_conditions as EC# available since 2.26.0 

ff = webdriver.Firefox() 
ff.get("http://somedomain/url_that_delays_loading") 
try: 
    element = WebDriverWait(ff, 10).until(EC.presence_of_element_located((By.ID, "myDynamicElement"))) 
finally: 
    ff.quit() 

如果仍然未找到該元素,但你的定位器是正確的,再有就是高機會,它可能在被渲染一個IFrame,在查找元素之前,您必須切換到該幀。

參考切換到一個IFrame此鏈接:selecting an iframe using python selenium

+0

謝謝,我是不是在正確的幀搜索! – Albert

相關問題