如何使用Ruby gem“selenium-webdriver”,“〜> 3.0”处理浏览器基本身份validation弹出窗口

  1. 如何使用gem 'selenium-webdriver', '~> 3.0'通过ruby脚本处理基本的auth弹出窗口,或者切换并输入用户名和密码来登录弹出/警告窗口?

  2. 有没有办法编辑firefox配置文件并添加到那里url并通过脚本保存登录?

此外,我无法从浏览器检查pup up / alert窗口中的元素以查找ID。

基本的auth弹出窗口不是来自我的脚本中@driver.get 'url' ,首先我去了一个不同的网站,然后点击一些链接,我得到了这个基本的auth弹出窗口。 当我从浏览器手动输入用户/传递时,它可以工作。

当我尝试做这样的事情时,我得到了例外:

a = @driver.switch_to.alert

a.send_keys("username")

caught exception Missing 'value' parameter!

Chrome屏幕截图 –

在此处输入图像描述

Firefox屏幕截图 –

在此处输入图像描述

这样@driver.get 'https://username:password@mysite.com/mypage/'效果不好,它会把我发回登录页面,然后弹出另一个窗口:

You are about to log in to the site “launchpad.support.sap.com” with the username “username”, but the website does not require authentication. This may be an attempt to trick you. Is “launchpad.support.sap.com” the site you want to visit?

我在java中找到了一些解决方案,但在ruby中没有:(

任何帮助,将不胜感激,

谢谢!

语法可能有所不同,因为我在Python中这样做:

 from selenium import webdriver driver = webdriver.Firefox() # or Chrome, works anyways driver.get('http://user:pass@my.web.page') try: alert = driver.switch_to_alert() alert.accept() except: # be careful, it is very generic example log.debug('no alert happened') 

与使用Selenium / Webdriver相比,与Basic Auth对话框的交互“不在范围内”(据我所知)。 我也同意这一点。 这就是说我必须一直处理Basic Auth,这很痛苦。

在URL中传递用户名/密码一直是浏览器中的一次又一次的事情。 这是一个安全问题,我认为今天的大多数浏览器都不允许这样做。 上次我检查Chrome重新启用它而不是Firefox。

我使用Java,我在Selenium Grid中的Windows节点上使用AutoIT。 这对我们来说已经有好几年了,但不再能“看到”Chrome提出的Basic Auth对话框了。 适用于Firefox和IE8-11。

我尝试过AppleScript和SokuliX并取得了一些成功,但两者都是“脆弱的”(特别是SokuliX)和有限的(AppleScript仅适用于mac)。 机器人也尝试但它非常像SokuliX,因此很脆弱 – 在使用时不要触摸鼠标/键盘。

最后,我们不得不将办公环境“白名单”与Basic Auth挑战一起呈现。