首页 文章

如何在机器人框架中关闭浏览器弹出窗口?

提问于
浏览
0

在Chrome浏览器中登录后,我从浏览器中获取了一个保存密码弹出窗口 . 我想处理那个弹出窗口并希望使用Robot Framework关闭它Browse popup window谢谢

3 回答

  • 1

    之前已经使用纯Python上下文询问并回答了这个问题 . 对于一个有效的机器人示例,这个答案在这个SO post上继续 .

    您看到的弹出窗口是由Chrome本身生成的 . 这不是HTML警报 . 因此,Selenium2Library关键字都不会对其产生任何影响 . 也不会设置cookie或javascript .

    enter image description here

    可以使用chrome://settings链接手动设置这些设置 . 转到 advanced settings ,然后向下滚动到 Passwords and Forms . 取消第二项,这将阻止弹出窗口 .

    enter image description here

    要在Robot Framework中自动执行相同操作,需要使用其他首选项启动WebDriver:

    Chrome With Preferences
        ${chrome_options} =     Evaluate    sys.modules['selenium.webdriver'].ChromeOptions()    sys, selenium.webdriver
    
        ${prefs}    Create Dictionary   credentials_enable_service=${false}  
    
        Call Method    ${chrome_options}    add_experimental_option    prefs    ${prefs}
        Call Method    ${chrome_options}    add_argument    --disable-infobars 
    
        Create WebDriver    Chrome    chrome_options=${chrome_options}
    
        Go To    https://secure.url.com
    

    这里的关键事项是 credentials_enable_service=${false} ,其中使用 ${false} 而非false是很重要的,因为后者被解释为字符串,然后作为"false"而不是正确的值 false 添加到Chrome .

    第二项是不将首选项添加为参数,而是通过将 dictionary 赋予 ChromeOptions() 对象的 prefs 属性,如下所示: add_experimental_option prefs ${prefs}

  • 0

    我认为这不是真实的(因为它是浏览器的属性 . )你有问题吗?唯一可以忽略的是javascript警报,可能最好的办法是:

    ${alert} =    Get Alert Message    dismiss=${dismiss}
    

    我在测试中使用了Run Keyword和Ignore Error来解决这个问题,这使得我能够获取可选的js警报内容和调试(也可以解析它可以执行套件的其余部分 . )

  • 0

    三种方法要做到这一点 .

    1)很多次,一旦弹出窗口出现在屏幕上并消失了,就可以在开发者控制台 - >应用程序中查看cookie . 如果使用 Add Cookie 关键字将此cookie设置为值 . 弹出窗口不会出现 .

    2)如果第一个不起作用,则打开开发人员工具并从开发人员工具 - >应用程序监视本地存储并关闭弹出窗口 . U会注意到某个变量的值存储在本地存储中 . 您可以使用脚本设置该值,并且在执行变量时不会看到弹出窗口 .

    3)如果第一个和第二个不起作用,则弹出窗口很可能与javascript变量相关联 . 使用 Execute Javascript 关键字设置java脚本变量,您的问题必须解决 .

    与您的开发团队交谈,了解哪种方式适合您 .

相关问题