2

嗨,我正在尝试在 OSSIM 网站中制作测试应用程序我在 python 2.7 中使用 selenium 和 firefox 当网站打开时,我需要访问 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自动化记录器来获得一个想法,但我不明白它是如何做到的。(但它正在工作)这是我可以的硒代码'不翻译成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
4

1 回答 1

0

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

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

您可以 execute_script 滚动到视图中。这个解决方案写在这个问题中:使用 webdriver 滚动到元素?

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

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

于 2018-12-14T23:52:01.527 回答