我想在此页面的弹出窗口中显示一个链接。 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.
非常感谢你。
答案 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
。我使用了这个特例,因为有问题的iframe
有iframe
- 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()
之外。然后,您可以单击对话框的关闭按钮,然后继续。请参阅上面代码中的最后一行,该行应该为您关闭对话框。