Selenium,弹出窗体(Python)

时间:2016-11-14 20:58:29

标签: javascript python forms selenium selenium-webdriver

我正在尝试填写某些网页上的表单。我和大多数人都取得了成功 然而,某些页面给我带来了麻烦。

某些页面的格式最初在页面本身上看不到表单,而是需要单击一个按钮,然后在页面中弹出一个(似乎是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')

我试图通过,name,id,xpath等找到元素,但无论尝试什么,它都找不到任何表单元素。

我非常感谢有关此事的任何帮助。

1 个答案:

答案 0 :(得分:0)

首先使用driver.switch_to_frame(0) (parent iFrame)切换  然后使用driver.switch_to_frame(1) (chiled iFrame)切换 然后是find the element

注意:而不是使用index,您可以使用id,name,xpath等标识帧,就像任何其他Web元素一样,并将该元素作为参数传递给switch_to_frame。这样可以提高一致性。