2017-11-20 4 views
0

ドラッグアンドドロップ機能がProtractor.net c#で私のために機能しなくなった理由は何ですか?Proractor.netを使用して要素をドラッグアンドドロップする方法C#UIオートメーション

http://marceljuenemann.github.io/angular-drag-and-drop-lists/demo/#/advancedを使用してこの機能をテストしてください。しかし、私のために働いていない。ここ

iが試みサンプルコードである:

Wait.Until(ExpectedConditions.ElementIsVisible(By.XPath( "//のH3 [= 'コンテナ(効果許可:すべて)']")));

var elem = NgDriver.FindElement(By.XPath( "h3 [。= 'コンテナ(エフェクトは許可されます:すべて)']"));

IWebElement parentElement = elem.FindElement(By.XPath( ".."));

IWebElement mov = parentElement.FindElement(NgBy.Repeater( "container.items"の項目));

 Wait.Until(ExpectedConditions.ElementIsVisible(By.XPath("//h3[.='Container (effects allowed: move)']"))); 
     var drropElem = NgDriver.FindElement(By.XPath("//h3[.='Container (effects allowed: move)']")); 
     IWebElement parentElement2 = drropElem.FindElement(By.XPath("..")); 


     IWebElement mov2 = parentElement2.FindElement(NgBy.Repeater("item in container.items")); 
Actions builder = new Actions(Driver); 
     Actions action = builder.ClickAndHold(mov); 
     builder.Build(); 
     action.Perform(); 

     builder = new Actions(Driver); 
     action = builder.MoveToElement(mov2); 
     builder.Release(mov2); 
     builder.Build(); 
     action.Perform(); 

また、アクションのDragAndDrop()関数で試行しました。

ご協力いただければ幸いです。

+0

私はこの問題を解決するために自分自身をまっすぐにしました。 SeleniumはHTML5ベースのドラッグアンドドロップをサポートしていません.HTML5ベースのドラッグアンドドロップを実行するにはJavascriptを使用する必要があります。 – Subitha

答えて

0

"drop.js"という名前のJavscriptファイルを作成し、次の内容を設定します。

function e(e,t,n,i){var r=a.createEvent("DragEvent");r.initMouseEvent(t,!0,!0,o,0,0,0,c,g,!1,!1,!1,!1,0,null),Object.defineProperty(r,"dataTransfer",{get:function(){return d}}),e.dispatchEvent(r),o.setTimeout(i,n)}var t=arguments[0],n=arguments[1],i=arguments[2]||0,r=arguments[3]||0;if(!t.draggable)throw new Error("Source element is not draggable.");var a=t.ownerDocument,o=a.defaultView,l=t.getBoundingClientRect(),u=n?n.getBoundingClientRect():l,c=l.left+(l.width>>1),g=l.top+(l.height>>1),s=u.left+(u.width>>1)+i,f=u.top+(u.height>>1)+r,d=Object.create(Object.prototype,{_items:{value:{}},effectAllowed:{value:"all",writable:!0},dropEffect:{value:"move",writable:!0},files:{get:function(){return this._items.Files}},types:{get:function(){return Object.keys(this._items)}},setData:{value:function(e,t){this._items[e]=t}},getData:{value:function(e){return this._items[e]}},clearData:{value:function(e){delete this._items[e]}},setDragImage:{value:function(e){}}});if(n=a.elementFromPoint(s,f),!n)throw new Error("The target element is not interactable and need to be scrolled into the view.");u=n.getBoundingClientRect(),e(t,"dragstart",101,function(){var i=n.getBoundingClientRect();c=i.left+s-u.left,g=i.top+f-u.top,e(n,"dragenter",1,function(){e(n,"dragover",101,function(){n=a.elementFromPoint(c,g),e(n,"drop",1,function(){e(t,"dragend",1,callback)})})})}) 

そして、あなたのコード内の

 string jsScript = Path.Combine(currentDirectory, "JavaScript", "drop.js"); 
     if (File.Exists(jsScript)) 
     { 
      string dragAndDropScript = File.ReadAllText(jsScript); 
      IJavaScriptExecutor jse = (IJavaScriptExecutor)NgDriver; 
      jse.ExecuteScript(dragAndDropScript, dragFrom, dragTo); 
     } 

drafFromdragToドラッグと滴下するために使用されるコントロールです。これらのコントロールには、HTMLタグに「draggable」や「dropable」などの属性が含まれている必要があります。

関連する問題