2017-01-15 5 views
1

以下のSelenium WebdriverコードのUnsupported Command Exceptionが表示されています。私はコンテキストクリックのオプションをgoogleにしようとしましたが、私が書いたコードがコンテキストクリックに関して正しいかどうかを確認することができました。コンテキストがセレンでクリック

ここで私が紛失しているものについて理解してください。

package DataProvider; 
import java.util.concurrent.TimeUnit; 
import org.openqa.selenium.By; 
import org.openqa.selenium.Keys; 
import org.openqa.selenium.UnsupportedCommandException; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.interactions.Action; 
import org.openqa.selenium.interactions.Actions; 
public class UISelect { 

public static void main(String args[]) throws InterruptedException 
{ 
      System.setProperty("webdriver.gecko.driver", "C:/Users/Madankumar/Desktop/Gecko Driver/geckodriver.exe"); 
      WebDriver driver=new FirefoxDriver(); 
      driver.navigate().to("http://www.google.com"); 

      driver.manage().window().maximize(); 

      WebElement oWE=driver.findElement(By.linkText("About")); 

      Actions oAction=new Actions(driver); 
      oAction.moveToElement(oWE); 
      oAction.contextClick(oWE).sendKeys(Keys.ARROW_DOWN).sendKeys(Keys.ENTER).build().perform(); 

} 

} 

答えて

1

私はGeckodriverを使用してFirefoxでセレンにアクション・チェーンを使用して問題があったが、ただのSendKeysだ場合は、個別に各1を送信することができますこのバグhttps://bugzilla.mozilla.org/show_bug.cgi?id=1292178#c1 によるものでした。私が行ったコマンドはアクションに依存していたので、代わりにjavascriptを使用してコマンドを送信するためにexecuteScriptを使用して解決しました。あなたは要素を見つけるために、任意のJavaScriptを実行することができますし、限り、あなたはDOM要素を返すように、それは自動的にWebElementオブジェクトに変換されます http://www.seleniumhq.org/docs/03_webdriver.jsp#selenium-webdriver-api-commands-and-operations

次のコードサンプルからです。

jQueryのロードされたページの

簡単な例:

WebElement element = (WebElement) ((JavascriptExecutor)driver).executeScript("return $('.cheese')[0]"); 

すべてのページにすべての入力を見つける:

List<WebElement> labels = driver.findElements(By.tagName("label")); 
List<WebElement> inputs = (List<WebElement>) ((JavascriptExecutor)driver).executeScript(
    "var labels = arguments[0], inputs = []; for (var i=0; i < labels.length; i++){" + 
    "inputs.push(document.getElementById(labels[i].getAttribute('for'))); } return inputs;", labels); 

のSendKeys:

// Find the text input element by its name 
    WebElement element = driver.findElement(By.name("q")); 

    // Enter something to search for 
    element.sendKeys("Cheese!"); 
+0

ご回答ありがとうございます。 sendKeysとexecute_scriptのコードスニペットを教えてください。 – Madan

+0

答えは例で編集されました。 execute_scriptはpythonコマンドです。私はjavaコマンドをexecuteScriptに変更しました。 – Matts

関連する問題