0

我正在使用以下:Selenium 2.33.0、Python 2.7.3、Firefox 21.0、Debian Wheezy:

使用 selenium,我必须单击框架内的注销按钮才能注销站点。下面的代码在调试模式下工作。在正常模式下,脚本执行以下 logout 方法而不引发任何异常,但 Logout() JavaScript 方法没有被执行。

任何人都可以指出我做错了什么,或者建议一种更好或替代的方法来使用 selenium 完成注销功能。

以下代码仅在调试模式下有效:

class BankInfo:
   ...
   logout_btn_selector='//a/img[@src="preferred/gif/logoutbtn.gif"]/..'
   ...

class Automaton():

    self.browser = webdriver.Firefox(firefox_profile=self.get_browser_preferences()) 
    self.bank_info = BankInfo

    def click_button_by_xpath(self, btn_xpath):
        btn = self.browser.find_element_by_xpath(btn_xpath)
        btn.click() 

    def logout(self, logout_btn_selector):
        self.browser.switch_to_default_content()
        self.browser.switch_to_frame('common_menu1')
        self.click_button_by_xpath(logout_btn_selector)

    def execute(self):
        ...
        self.logout(self.bank_info.logout_btn_selector)
    ...

if __name__ == '__main__':
    Automaton.execute()

按钮所在页面的标记:

4

1 回答 1

0

我在 get_browser_preferences() 方法中添加了以下行: firefox_profile.set_preference("browser.download.useToolkitUI", True)

我怀疑具有“显示所有下载”链接的下载窗口阻止了 selenium 网络驱动程序单击下载窗口下方的注销按钮。上述设置阻止了下载窗口出现。

于 2013-06-22T15:24:15.990 回答