2016-11-14 98 views
1

我試圖填補某些網頁的形式。我在大多數 網頁上都取得了成功,但某些人給我帶來麻煩。硒,彈出形式(Python)的

有些頁面的格式最初並不是在頁面本身顯示,而是需要單擊一個按鈕,然後在頁面中彈出一個(看上去像是JavaScript)彈出,然後需要填充。

我環顧四周,並看到其解決如何填補其中獲得在新彈出的窗口中創建並獲得在警告窗口中創建的實例。但是,我似乎無法找到任何可以解決這個特殊情況的例子。

這是我到目前爲止的代碼。

 driver = webdriver.Chrome() 
    driver.implicitly_wait(10) 

    mouse = webdriver.ActionChains(driver)  
    driver.get(url) 

    driver.maximize_window() 

    value = 'fill form' 
    span_xpath = '//span[contains(text(), "' + value + '")]' 
    span_element = driver.find_element_by_xpath(span_xpath) 
    mouse.move_to_element(span_element).click().perform() 
    time.sleep(5) 

一切工作到這裏,填寫表單按鈕被點擊,在瀏覽器頁面打開表格。

但當下面是執行錯誤總是出現:「沒有這樣的元素:無法找到元素」

 n =driver.find_element_by_id('name') 
    n.send_keys('john smith') 

我曾嘗試,姓名,身份證,XPath和等定位元素,但無論怎樣嘗試,它都找不到任何表單元素。

我將不勝感激在這個問題上的任何幫助。

+0

確保流行元素沒有任何幀/ iframe中? –

+0

@SaurabhGaur,是的,它在iframe中。然而,它是一個iframe中的iframe。我可以使用src = driver.find_element_by_id(「iframe_id」)。get_attribute(「src」)來訪問第一個iframe的src。但第二個iframe withiin該iframe沒有一個id,所以我不知道如何得到它的src –

+0

你需要切換第一個父iframe在訪問子iframe –

回答

0

使用driver.switch_to_frame(0) (parent iFrame) 然後使用driver.switch_to_frame(1) (chiled iFrame) 然後find the element切換第一開關。

注:而不是使用index您可以使用ID,名稱,XPath的等像任何其他網頁元素識別框架,並通過該元素switch_to_frame作爲參數。這提供了更多一致性。