【问题标题】:Automating authentication with Watir使用 Watir 自动进行身份验证
【发布时间】:2012-01-06 07:35:29
【问题描述】:

我已经搜索并搜索了这个,但我似乎无法让这个自动化工作。在 OpenQA 网站上使用了所有的 basic authentication code 之后,我仍然无法让身份验证框工作。

我使用的是 IE8,网站启用了 HTTPS。

通过使用 Watir,我可以将 IE 打开到正确的页面,但我尝试的任何操作都无法让我在登录表单中输入任何内容。

这是我将其缩减为的代码:

require 'watir'

url = 'https://thewebsite.com' 
@username = 'myusername'
@password = 'mypassword' 

browser = Watir::Browser.new
browser.goto url
sleep 5 
Watir.autoit.WinWait('Blank Page')
Watir.autoit.Send(@username)
Watir.autoit.Send('{TAB}')
Watir.autoit.Send(@password)
Watir.autoit.Send('{ENTER}')

有没有人有任何建议或链接?我在 OpenQA 网站上找到的很多信息似乎都已经过时了。

谢谢

【问题讨论】:

  • 您能否为我们提供一个具有此类身份验证的公共站点的示例?显然,为了使这部分自动化,我们不需要能够实际访问该站点,但如果我们能够获得身份验证对话框,输入数据并单击按钮(即使我们的凭据被拒绝)就足够了。没有示例,人们很难试验或调试现有代码。
  • 首先,您使用的是什么版本的 Watir?其次,当您尝试上面给出的代码时,究竟会发生什么。知道你尝试了什么是好的,但是如果没有关于发生了什么的细节(例如任何错误消息),我们仍然没有足够的有用信息来确定你的方法在哪里出错。
  • 不确定您是否能够访问此站点(您可能必须在网络上)evolve.warwickshire.nhs.uk/ArdenDev
  • Watir 2.02 版。红宝石 1.9.2p290。 IE 打开,页面加载,没有任何内容输入到框中。这是控制台中产生的错误: ...evolve.rb:14:in '
    ' : undefined method 'autoit' for Watir:Module(NoMethodError) 现在我可能很愚蠢,我已经安装了 autoit,虽然我担心我可能遗漏了一个重要部分..
  • 您是否尝试过在 hhtp://myusername/mypassword@thewebsite.com 等 url 上进行身份验证

标签: ruby automation watir


【解决方案1】:

你试过RAutomation而不是autoit吗?

【讨论】:

  • 你能给我一个简单的身份验证的例子吗?
  • 我从来不用处理弹出窗口,所以我没有任何示例代码。我刚刚听说 watir 不再使用 autoit,而是使用 rautomation 来处理弹出窗口。
【解决方案2】:

您是否尝试过将 url 与用户一起使用并传入它?像 url = 'https://username:password@thewebsite.com',你可以尝试在浏览器中手动访问 url,如果它手动工作,它也应该在你的脚本中工作。

【讨论】:

    【解决方案3】:

    我来到这里遇到了同样的问题,尽管由于最新版本的 Watir 和 watir-webdriver,答案看起来有所不同。我将展示对我有用的方法:

    watir (4.0.2 x86-mingw32)
    watir-classic (3.6.0)
    watir-webdriver (0.6.2)
    

    Watir 不再内置 autoit,而且我发现的其他建议 (require 'watir/ie') 似乎也不再有效。本着使用所要求的原始技术解决此问题的精神:

    确保安装后 AutoIT 已在 windows 中注册。 转到AutotIT dll(与上面提到的rautomation gem一起安装,认为Watir安装了这个)

    cd C:\Ruby193\lib\ruby\gems\1.9.1\gems\rautomation-0.8.0\ext\AutoItX
    regsvr32 AutoItX3.dll
    

    那么下面的代码应该可以工作了

    require 'watir'
    require 'win32ole'
    
    $b = Watir::Browser.new :ie
    begin
        $b.goto( 'http://10.254.157.34:8383/mywebsite/stuff.html');
    rescue Exception => e
        puts "Trapped Error, expecting modal dialog exception"
        puts e.backtrace 
        puts "Continuing"
    end
    
    login_title = "Windows Security" #For Windows 7, dialog title for anything else
    username = "myuser"
    password = "mypassword"
    
    sleep 1 #Just in case
    au3 = WIN32OLE.new("AutoItX3.Control")
    win_exists = au3.WinWait(login_title, "", 5)    
    
    if (win_exists > 0)
        au3.WinActivate(login_title)
        au3.Send('!u')
        au3.Send(username)
        au3.Send('{TAB}')
        au3.Send(password)
        au3.Send('{ENTER}')
    end
    

    【讨论】:

      猜你喜欢
      • 2019-01-31
      • 1970-01-01
      • 2011-12-23
      • 2019-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多