在弹出窗口中获取链接(python,selenium)

时间:2014-09-18 17:25:56

标签: python selenium

我想在此页面的弹出窗口中显示一个链接。 http://stivconsultasexternas.cnbv.gob.mx/ConsultaInformacionEmisoras.aspx 单击显示该页面的第一个链接会向我们显示一个弹出窗口。我喜欢在瘦窗口内找到链接。

这是我的代码。我感谢任何帮助。

from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get("http://stivconsultasexternas.cnbv.gob.mx/ConsultaInformacionEmisoras.aspx")
link=driver.find_elements_by_partial_link_text(u"Verum")
time.sleep(5)
link[0].click()
time.sleep(5)
print driver.page_source.encode("utf_8","ignore")#Here I want a html of a popup window.

非常感谢你。

1 个答案:

答案 0 :(得分:0)

您遇到的问题是弹出窗口位于iframe。 Selenium只能访问当前内容,子iframe中的任何内容都无法访问。为了让Selenium能够访问新的iframe,您需要使用switch_to.frame

link[0].click()
time.sleep(5)
driver.switch_to.frame("DefaultPlaceholder_callbackPanel_Popup_CIF-1")
print driver.page_source.encode("utf_8","ignore")#Here I want a html of a popup window.
driver.switch_to.default_content()
driver.find_element_by_xpath("//td[@id='DefaultPlaceholder_callbackPanel_Popup_HCB-1']").click()

编辑#1:

我查看了该页面,发现您要访问的popin包含在此iframe中:

<iframe id="DefaultPlaceholder_callbackPanel_Popup_CIF-1" title="" src="/Detalle.aspx?enc=vxwQ2MoMebbVt2C93KNYJA%3d%3d" scrolling="auto" frameborder="0" style="height: 578px; width: 100%;">

switch_to.frame()可以接受以下内容作为标识符:
- name的{​​{1}}或id。我使用了这个特例,因为有问题的iframeiframe
- id="DefaultPlaceholder_callbackPanel_Popup_CIF-1"的索引。这看起来像iframe - switch_to.frame(0)元素。您可以通过iframe定位符找到iframe元素,然后使用find_element_by_

中的webelement结果

编辑#2:

要关闭对话框,您需要使用switch_to.frame(el),因为关闭按钮位于switch_to.default_content()之外。然后,您可以单击对话框的关闭按钮,然后继续。请参阅上面代码中的最后一行,该行应该为您关闭对话框。