2

我能够在 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");

现在,我将 Selenium2Library 的 Java 端口用于 Robot Framework。我该如何做与上述类似的事情?我尝试了以下方法:

${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 代码使弹出窗口消失。我只是不能对 RF 做同样的事情。

谢谢你的帮助。

4

2 回答 2

0

通过 desiredCapabilities 参数将 Chrome 选项作为 JSON 字符串传递给Open Browser 。如果您在 Java 中创建功能对象,请使用toJson方法创建 JSON 对象。然后对 JSON 对象使用getAsString方法来获取字符串。然后将该字符串作为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();
}
于 2016-08-01T16:38:38.897 回答
-3

不要使用“打开浏览器”,而是使用“创建 Webdriver”关键字。

于 2016-07-31T17:38:59.100 回答