1

C# (.net Framework 4) で Web 自動化ツールを開発しています。Selenium webDriver と PhantomJS を使用しています。それは本当に素晴らしいことです!しかし、「ネイティブな」PhantomJS js コマンドを使用したい場合がありuploadFileますinjectJs

今phantomjsを使用する方法:まず、--webdriver=paramを使用してphantomjs実行可能ファイルを開始します。次は:

// connection
private bool ConnectToWebDriver()
        {
            try
            {
                _driver = new RemoteWebDriver(new Uri(localHost+':'+numericPortSelector.Value+"/wd/hub"),
                DesiredCapabilities.PhantomJS());
                _scriptExecutor = _driver as IJavaScriptExecutor;
                _driver.Manage().Timeouts().SetPageLoadTimeout(new TimeSpan(0, 0, (int) numericTimeOut.Value));
                return true;
            }
            catch (Exception)
            {
                return false;
            }  
        }

ありがとう!

4

1 に答える 1

1

私の知る限り、WebDriver はネイティブの PhantomJs 関数を呼び出す機能を提供していません。

1. injectJs

したがって、js を機能させるには、次のことをお勧めします。JavascriptExecutor の回避策を調査してください。

JavascriptExecutor js = (JavascriptExecutor) driver;
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("var x = $(\'"+webElementCSSSelector+"\');");
        stringBuilder.append("x.click();");
        js.executeScript(stringBuilder.toString());

注:このソリューションは私にとってはうまく機能しますが、私はJAVAに取り組んでいます。

2. uploadFile ファイルのアップロード操作を実行するには、アップロードされるはずのファイルの場所が設定されたロボット+クリップボード操作を使用してみてください

Robot robot = new Robot();
        String fileToUploadLocation="C:\\test.png";
        setClipboardData(fileToUploadLocation);
        robot.delay(2000);
        robot.keyPress(KeyEvent.VK_CONTROL);
        robot.keyPress(KeyEvent.VK_V);
        robot.keyRelease(KeyEvent.VK_V);
        robot.keyRelease(KeyEvent.VK_CONTROL);
        robot.keyPress(KeyEvent.VK_ENTER);
        robot.keyRelease(KeyEvent.VK_ENTER);

  public static void setClipboardData(String str){
        StringSelection stringSelection = new StringSelection(str);
        Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection,null);
    } 

注:これは私にとっても問題なく機能しますが、Javaで作業しています。これがお役に立てば幸いです。

于 2014-07-06T17:52:37.520 に答える