0

我正在尝试与具有打开弹出窗口的编辑链接的页面上的 web 元素进行迭代。在打开的弹出窗口中,我有简单的输入字段和应用/取消按钮。在我的脚本中,我执行以下操作以在输入字段中输入一些文本:

def enter_text(self, text, action):
        if self.is_element_present(self._input_locator):
            self.selenium.find_element(*self._input_locator).send_keys(text)
        if action == 'Apply':
            self.selenium.find_element(*self._apply_button_locator).click()
        elif action == 'Cancel':
            self.selenium.find_element(*self._cancel_button_locator).click()

当我在 Chrome 中运行我的脚本时 - 一切正常,所有 web 元素都被找到并且输入文本被输入到该字段中。但是当我在 Firefox 中运行完全相同的脚本时 - 它会打开带有输入字段和 2 个按钮的弹出窗口(这意味着它对 Webdriver 可见),但文本没有输入到导致错误的字段中:

ElementNotVisibleException: Message: u'Element is not currently visible and so may not be interacted with' 

如果弹出窗口实际打开(我可以看到)但 Webdriver 告诉它不可见,为什么会发生这种情况?另外,我睡了几次只是为了确保弹出窗口加载,然后输入文本,但它没有帮助。

任何帮助将不胜感激。

4

2 回答 2

0

两个想法:

1:确保您的 HTML 有效,例如通过w3c 验证器运行它。损坏的 html 是不同浏览器中不同行为的常见原因。

2:您是否确定将硒切换到弹出窗口,使用例如:

for handle in self.selenium.window_handles:
    # identify popup window's handle somehow
    self.selenium.switch_to_window(handle)

顺便说一句,如果你还没有遇到过selenium.implicitly_wait(3),它作为一种避免time.sleeps 和 wait-for 构造的方法非常有用。

于 2013-01-05T16:57:08.363 回答
0

你用的是火狐版和Webdriver版吗?

请尝试以下方法:

  • 将 Webdriver 更新到最新版本
  • 如果您使用的是 firefox 17-18,请将其降级为较低版本(我猜 FF12 会工作)

请尝试一下并告诉我会发生什么,

问候

于 2013-01-07T11:01:45.763 回答