2016-07-31 91 views
2

我能够做如下工作的Java:机器人框架 - 通chromeoption作为desiredcapability

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移植机器人框架。 我该怎么做类似于上面的东西? 我已经试过如下:

${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做同样的事情。

感谢您的帮助。

回答

-2

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

+0

他们正在使用Selenium2Library的Java端口。创建Webdriver不在那里实现。 – ombre42

0

将Chrome选项作为JSON字符串通过desiredCapabilities参数传递给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(); 
} 
+0

你好,谢谢你的回答。我试过了。但是,似乎toJson()方法不适用于DesiredCapabilities类。它仅适用于ChromeOptions类。所以我不能以字符串形式返回能力。 – tic

+0

我能够返回desiredCapability作为字符串使用︰return capabilities.getCapability(ChromeOptions.CAPABILITY).toString(); ...但是,我遇到了:“无效desiredCapabilities:desired_capabilities = org.openqa.selenium.chrome.ChromeOptions @ 13473b89。 – tic

+0

我能够通过chromeOption作为JSON格式的desiredCapability。值为'chromeOptions':u'[email protected]'。但是,我相信它仍然是不可能的这是因为Selenium2Library的当前Java端口不会导入ChromeOptions。任何想法的人? – tic