2016-11-14 46 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作为参数。这提供了更多一致性。