在硒中导航iframe和表格

时间:2018-04-22 11:44:42

标签: python-2.7 selenium frame popupwindow katalon-recorder

您好我想在OSSIM网站上制作测试应用 我在firefox中使用python 2.7中的selenium 当网站打开时,我需要访问iframe,我这样做: 记住这个HTML:

<iframe id="main" name="main" src="/ossim/forensics/base_qry_main.php?clear_allcriteria=1&amp;num_result_rows=-1&amp;submit=Query+DB&amp;current_view=-1&amp;sort_order=time_d&amp;time%5B0%5D%5B0%5D=+&amp;time%5B0%5D%5B1%5D=%3E%3D&amp;time%5B0%5D%5B2%5D=04&amp;time%5B0%5D%5B3%5D=21&amp;time%5B0%5D%5B4%5D=2018&amp;time%5B0%5D%5B5%5D=12&amp;time%5B0%5D%5B6%5D=&amp;time%5B0%5D%5B7%5D=&amp;time%5B0%5D%5B8%5D=+&amp;time%5B0%5D%5B9%5D=+&amp;time_range=day&amp;m_opt=analysis&amp;sm_opt=security_events" style="visibility: visible; height: 2543px;"></iframe>

我像这样访问框架

driver.switch_to.frame(driver.find_element_by_name('main'))

到目前为止一切顺利,现在我找到了我需要点击的按钮:

我需要点击adv_search_button,这很简单所以我这样做:

driver.find_element_by_id('adv_search_button').click()

问题出现了某种框架,其中包含我需要的格式,并且不知道如何访问我知道出现的格式是:

$('#adv_search_button').click(function(){
                    GB_show("B&uacute;squeda avanzada","/forensics/base_qry_form.php", 550, 900);
                    return false;

经过多次尝试后,我放弃了试图自己弄清楚,尝试了katalon自动记录仪来获得一个想法,但我不明白它是如何做到的。(但它正在工作)这里&# 39;是我无法翻译成python的硒代码:

selenium.open("URL")
selenium.selectFrame("index=0")
selenium.click("id=adv_search_button")
selenium.selectFrame("relative=parent")
selenium.selectFrame("index=1") -< Here is where i want to be , to get the code and interact with the website.

我试图这样做:

driver.switch_to.frame("index=0")

这是我得到的错误。

>>> driver.switch_to.frame("index=0")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\switch_to.py", l
ine 87, in frame
    raise NoSuchFrameException(frame_reference)
selenium.common.exceptions.NoSuchFrameException: Message: index=0

1 个答案:

答案 0 :(得分:0)

“我已经更新了问题,仍然不知道如何访问尚未加载的内容,甚至无法访问主iframe中的内容。– Rakall”

有不同的选择。 首先,您可能需要查看要单击的元素。

您可以执行脚本以滚动到视图中。 此解决方案是在以下问题中提出的:Scrolling to element using webdriver?

您也可能想使用ActionChains执行更多类似于用户的操作链,以便正确测试您的应用程序。

它可以正确发送密钥,一个接一个地执行动作或将一堆动作链接在一起,然后按顺序执行。