Selenium webdriver 机器人框架-根据需要传递颜色

Selenium webdriver 机器人框架-根据需要传递颜色,selenium-webdriver,robotframework,selenium2library,Selenium Webdriver,Robotframework,Selenium2library,我能够用Java完成以下工作: DesiredCapabilities capabilities = DesiredCapabilities.chrome(); ChromeOptions options = new ChromeOptions(); options.addArguments("--disable-extensions"); capabilities.setCapability(ChromeOptions.CAPABILITY, options); ChromeDriver dr

我能够用Java完成以下工作:

DesiredCapabilities capabilities = DesiredCapabilities.chrome();
ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-extensions");
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
ChromeDriver driver = new ChromeDriver(capabilities);
driver.get("https://www.google.com");
现在,我正在使用Selenium2库的Java端口作为Robot框架。 我怎样才能做与上面类似的事情? 我尝试了以下方法:

${chrome_options}=    Evaluate    sys.modules['selenium.webdriver'].ChromeOptions()    sys, selenium.webdriver
${chrome_capabilities}=    Evaluate    sys.modules['selenium.webdriver'].DesiredCapabilities.CHROME    sys, selenium.webdriver
Call Method    ${chrome_options}    add_argument    disable-extensions
Set To Dictionary    ${chrome_capabilities}    ChromeOptions.CAPABILITY=${chrome_options}
Open Browser    https://www.google.com    Chrome    None    None        desired_capabilities=${chrome_capabilities}    None
每次我打开浏览器时都会出现一个弹出窗口,这就是为什么我需要禁用chromeOptions。如上所述,我能够使用Java代码使弹出窗口消失。我就是不能用射频做同样的事情


感谢您的帮助。

使用“创建Webdriver”关键字代替“打开浏览器”。

使用“创建Webdriver”关键字代替“打开浏览器”。

通过desiredCapabilities参数将Chrome选项作为JSON字符串传递给。如果在Java中创建capabilities对象,请使用该方法创建JSON对象。然后使用JSON对象上的方法获取字符串。然后将该字符串作为desiredCapabilities的值传递。因此,本质上您需要创建一个Java用户关键字来返回所需的功能字符串

# the below should return something similar to {'platform': 'ANY', 'browserName': 'chrome', 'version': '', 'chromeOptions': {'args': ['--disable-extensions'], 'extensions': []}, 'javascriptEnabled': True}
${desired caps}    Get Capabilities    # call custom keyword to get capabilities string
Open Browser    https://stackoverflow.com    gc    desiredCapabilities=${desired caps}

public String getCapabilities() {}
    DesiredCapabilities capabilities = DesiredCapabilities.chrome();
    ChromeOptions options = new ChromeOptions();
    options.addArguments("--disable-extensions");
    capabilities.setCapability(ChromeOptions.CAPABILITY, options);
    return capabilities.toJson().getAsString();
}

通过desiredCapabilities参数将Chrome选项作为JSON字符串传递给。如果在Java中创建capabilities对象,请使用该方法创建JSON对象。然后使用JSON对象上的方法获取字符串。然后将该字符串作为desiredCapabilities的值传递。因此,本质上您需要创建一个Java用户关键字来返回所需的功能字符串

# the below should return something similar to {'platform': 'ANY', 'browserName': 'chrome', 'version': '', 'chromeOptions': {'args': ['--disable-extensions'], 'extensions': []}, 'javascriptEnabled': True}
${desired caps}    Get Capabilities    # call custom keyword to get capabilities string
Open Browser    https://stackoverflow.com    gc    desiredCapabilities=${desired caps}

public String getCapabilities() {}
    DesiredCapabilities capabilities = DesiredCapabilities.chrome();
    ChromeOptions options = new ChromeOptions();
    options.addArguments("--disable-extensions");
    capabilities.setCapability(ChromeOptions.CAPABILITY, options);
    return capabilities.toJson().getAsString();
}

他们正在使用Selenium2库的Java端口。那里没有实现创建Webdriver。它们正在使用Selenium2库的Java端口。这里没有实现创建Webdriver。您好,谢谢您的回答。我试过了。但toJson()方法似乎不适用于DesiredCapabilities类。它只适用于ChromeOptions类。因此,我无法将功能作为字符串返回。我可以使用以下命令将desiredCapability作为字符串返回:return capabilities.getCapability(ChromeOptions.CAPABILITY).toString();。。。然而,我遇到了:“desiredCapabilities无效:desired_capabilities=org.openqa.selenium.chrome。ChromeOptions@13473b89.I能够以JSON格式将chromeOption作为所需功能传递。该值为'chromeOptions':u'org.openqa.selenium.chrome。ChromeOptions@13473b89'. 然而,我相信目前还不可能在Chrome中禁用扩展。这是因为Selenium2库的当前Java端口不导入ChromeOptions。有什么想法吗,伙计们?我不想推荐这种方法,但也许是最好的。看见较新版本的软件包名称错误。基本上,不需要通过编程方式生成功能字符串,只需创建您自己的webdriver实例并将其注入selenium2library。谢谢您的回答。对不起,我只是有点困惑。您可以使用RF with Selenium2 library打开浏览器,获取WebDriver实例并将其与自定义库一起使用。相反的可能吗?使用自定义库打开浏览器(这样我就可以设置chromeOptions),然后获取WebDriver实例并在RF with Selenium2Libary中使用它?您好,谢谢您的回答。我试过了。但toJson()方法似乎不适用于DesiredCapabilities类。它只适用于ChromeOptions类。因此,我无法将功能作为字符串返回。我可以使用以下命令将desiredCapability作为字符串返回:return capabilities.getCapability(ChromeOptions.CAPABILITY).toString();。。。然而,我遇到了:“desiredCapabilities无效:desired_capabilities=org.openqa.selenium.chrome。ChromeOptions@13473b89.I能够以JSON格式将chromeOption作为所需功能传递。该值为'chromeOptions':u'org.openqa.selenium.chrome。ChromeOptions@13473b89'. 然而,我相信目前还不可能在Chrome中禁用扩展。这是因为Selenium2库的当前Java端口不导入ChromeOptions。有什么想法吗,伙计们?我不想推荐这种方法,但也许是最好的。看见较新版本的软件包名称错误。基本上,不需要通过编程方式生成功能字符串,只需创建您自己的webdriver实例并将其注入selenium2library。谢谢您的回答。对不起,我只是有点困惑。您可以使用RF with Selenium2 library打开浏览器,获取WebDriver实例并将其与自定义库一起使用。相反的可能吗?使用您的自定义库打开浏览器(这样我就可以设置chromeOptions),然后获取WebDriver实例并在RF with Selenium2Libary中使用它?