栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

[C#] [Selenium]如何拖放元素

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[C#] [Selenium]如何拖放元素

Selenium的拖放操作在HTML5中效果不佳,因此我求助于使用jquery拖动元素。

我将这些用作参考:https :
//gist.github.com/rcorreia/2362544

http://elementalselenium.com/tips/39-drag-
and-drop

结果如下:

public void WhenAStudentIsMovedToANewGroup(string action, string student, string group)    {        WaitForAngular();        IWebDriver driver = (IWebDriver)FeatureContext.Current["Driver"];                driver.Manage().Timeouts().SetscriptTimeout(TimeSpan.FromSeconds(10));        IJavascriptExecutor js = (IJavascriptExecutor)driver;        js.ExecuteAsyncscript(loadJQuery, jQueryUrl);        string dragEntity = string.Format("[title="{0}"]", student);        string target = string.Format("[ui-on-drop="model.onMoveDrop(group)"]:contains({0})  ~ div > div .{1}", group, action);        string javascriptString = string.Format("{0}$('{1}').simulateDragDrop({{ dropTarget: '{2}'}});", dragAndDropHelper, dragEntity, target);        //Execute the drag and drop against the HTML5        js.Executescript(javascriptString);    }    const string dragAndDropHelper = @"(function( $ ) {    $.fn.simulateDragDrop = function(options) { return this.each(function() {         new $.simulateDragDrop(this, options); });    };    $.simulateDragDrop = function(elem, options) { this.options = options; this.simulateEvent(elem, options);    };    $.extend($.simulateDragDrop.prototype, { simulateEvent: function(elem, options) {                  var type = 'dragstart';         var event = this.createEvent(type);         this.dispatchEvent(elem, type, event);                  type = 'drop';         var dropEvent = this.createEvent(type, {});         dropEvent.dataTransfer = event.dataTransfer;         this.dispatchEvent($(options.dropTarget)[0], type, dropEvent);                  type = 'dragend';         var dragEndEvent = this.createEvent(type, {});         dragEndEvent.dataTransfer = event.dataTransfer;         this.dispatchEvent(elem, type, dragEndEvent); }, createEvent: function(type) {         var event = document.createEvent(""CustomEvent"");         event.initCustomEvent(type, true, true, null);         event.dataTransfer = {      data: {      },      setdata: function(type, val){   this.data[type] = val;      },      getdata: function(type){   return this.data[type];      }         };         return event; }, dispatchEvent: function(elem, type, event) {         if(elem.dispatchEvent) {      elem.dispatchEvent(event);         }else if( elem.fireEvent ) {      elem.fireEvent(""on""+type, event);         } }    });})(jQuery);";    const string loadJQuery = @"(function(jqueryUrl, callback) {if (typeof jqueryUrl != 'string') {    jqueryUrl = 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js';}if (typeof jQuery == 'undefined') {    var script = document.createElement('script');    var head = document.getElementsByTagName('head')[0];    var done = false;    script.onload = script.onreadystatechange = (function() {        if (!done && (!this.readyState || this.readyState == 'loaded'      || this.readyState == 'complete')) { done = true; script.onload = script.onreadystatechange = null; head.removeChild(script); callback();        }    });    script.src = jqueryUrl;    head.appendChild(script);}else {    callback();}})(arguments[0], arguments[arguments.length - 1]);";


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/447879.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号