2016-07-31 28 views
2

konnte ich folgende Arbeiten in Java machen:Robot Framework - Pass chromeoption als 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"); 

Nun, ich bin mit dem Java-Port von Selenium2Library für Robot Framework. Wie kann ich etwas Ähnliches wie oben beschrieben machen? Ich habe das versucht, folgende:

${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 

Es ist ein Pop-up, die jedes Mal, wenn ich einen Browser öffnen erscheint, das ist, warum ich chromeOptions deaktivieren müssen. Wie oben erwähnt, konnte ich das Popup mit dem Java-Code verschwinden lassen. Ich konnte einfach nicht dasselbe mit RF machen.

Danke für Ihre Hilfe.

Antwort

-2

Verwenden Sie anstelle von "Browser öffnen" das Schlüsselwort "Create Webdriver".

+0

Sie verwenden den Java-Port von Selenium2Library. Create Webdriver ist dort nicht implementiert. – ombre42

0

Übergeben Sie die Chrome-Optionen über das Argument sinedCapabilities an Open Browser als JSON-Zeichenfolge. Wenn Sie ein Funktionsobjekt in Java erstellen, verwenden Sie die Methode toJson, um ein JSON-Objekt zu erstellen. Verwenden Sie dann die getAsString-Methode für das JSON-Objekt, um eine Zeichenfolge abzurufen. Übergeben Sie dann diese Zeichenfolge als den Wert für sinedCapabilities. Sie müssen also im Wesentlichen ein Java-Benutzerschlüsselwort erstellen, das eine gewünschte Funktionszeichenfolge zurückgibt.

# 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

Hallo, danke für deine Antwort. Ich habe es versucht. Aber es scheint, dass die Methode toJson() für die Klasse DesiredCapabilities nicht verfügbar ist. Dies gilt nur für die ChromeOptions-Klasse. Daher kann ich keine Funktionen als String zurückgeben. – tic

+0

Ich konnte sinedCapability als Zeichenfolge zurückgeben mit: return capabilities.getCapability (ChromeOptions.CAPABILITY) .toString(); ... Allerdings habe ich festgestellt: "Ungültige sinedCapabilities: sited_capabilities = org.openqa.selenium.chrome.ChromeOptions @ 13473b89. – tic

+0

Ich konnte chromeOption als gewünschteCapability im JSON-Format übergeben.Der Wert ist 'chromeOptions': u'[email protected] '. Allerdings glaube ich, dass es immer noch nicht möglich sein würde deaktiviere momentan Erweiterungen in Chrome, da der aktuelle Java-Port von Selenium2Library keine ChromeOptions importiert. Irgendeine Idee Leute? – tic