带有Firefox的Selenium-轻松地将控制权交给用户

时间:2019-01-14 08:40:34

标签: python selenium selenium-firefoxdriver

我正在使用Atlassian Jira作为变更跟踪工具。我必须手动输入多个字段并决定自动执行。为了使Jira问题创建过程自动化,我决定将Selenium与Firefox 60.0结合使用。

当我执行Selenium脚本时,它成功打开了“创建问题”对话框,并填充了可自动化字段。然后脚本停止,因为用户必须手动输入摘要和描述字段。

我没有调用webdriver.quit(),因为我希望用户继续创建过程。但是,当脚本结束时,Jira服务器连接已关闭(我通过单击其他按钮来理解,并且警告说Jira服务器可能已关闭等),即使我填写了所有必填字段,create-issue-submit按钮也没有响应

如果我通过预先用占位符文本填充必填字段来自动执行“创建-发出-提交”按钮的单击,则不会产生任何问题。但是您必须了解,我绝不会允许用户根据设计决策自动创建问题。我只想填写空白字段,在“创建问题对话框”窗口中选择选项,其余的留给用户。

我在Internet Explorer 11.0上没有看到此问题(脚本结束后,我可以单击创建-发布-提交按钮,它会创建),但是其网络驱动程序存在问题,整个脚本在30秒内完成,陷入了不同的部分每次。

我相信原因是该公司使用的Jira证书未被认可。我不是网络开发人员,但是在Firefox中收到SEC_UNKNOWN_ISSUER错误,我认为Firefox比IE 11更严格。我认为Selenium具有绕过Firefox安全措施的机制,但是一旦脚本结束,我就受到Firefox的监管,并且切断了我与Jira服务器的连接。无论如何,我添加了代码段来信任未知证书。这是下面的代码;

binary = FirefoxBinary(<binary_path>)
profile = FirefoxProfile()
profile.accept_untrusted_certs = True
driver = Firefox(firefox_binary=binary, firefox_profile=profile)

fill_some_fields()
select_some_options()

我针对此问题的解决方法是在退出脚本之前添加sleep(100)。如果用户在100秒内单击创建问题提交按钮,则会产生问题。如果不是,则脚本结束并且Jira连接丢失。但是我需要一个更好的解决方案,因为用户可能要花费100多个时间或任意时间延迟。

1 个答案:

答案 0 :(得分:1)

这个问题非常广泛...所以我将尽力解决最后一个问题

  

我需要一个更好的解决方案,因为用户可能要花费100多个时间或任意时间延迟

此解决方案试图通过添加确认按钮来确认任务已完成来等待用户交互...

我看到您尝试使用IE,所以我想您正在使用Windows ...

在这种情况下: 如果您只是在寻找等待人类互动的方法,则可以将win32ui s MessageBoxwin32con s MB_SYSTEMMODAL结合使用,以创建带有确认按钮的窗口,以确认用户完成了自动化无法完成的任务...

她是一个例子:

 import win32ui
 from win32con import MB_SYSTEMMODAL

 start = win32ui.MessageBox("fill empty fields", "Instructions", MB_SYSTEMMODAL)
 if start == 1:
     # do the rest of the automation...
     pass

希望这至少可以帮助您进行用户交互...