selenium支持html5吗,selenium drag_and_drop不支持HTML5解决方法

背景

项目中需要拖拽操作,使用drag and drop,经测试并不生效,没有实现拖动,但是robotframework并不报错,原来是因为selenium并不支持对html5的拖拽操作,所以我们需要使用javascript来处理。

[drag_and_drop.js]

var dataTransfer =

{

dropEffect: '',

effectAllowed: 'all',

files: [],

items: {},

types: [],

setData: function (format, data) {

this.items[format] = data;

this.types.append(format);

},

getData: function (format) {

return this.items[format];

},

clearData: function (format) {

}

};

var emit = function (event, target) {

var evt = document.createEvent('Event');

evt.initEvent(event, true, false);

evt.dataTransfer = dataTransfer;

target.dispatchEvent(evt);

};

var DragNDrop = function (src, tgt) {

src = document.getElementById(src);

tgt = document.getElementById(tgt);

emit('dragstart', src);

emit('dragenter', tgt);

emit('dragover', tgt);

emit('drop', tgt);

emit('dragend', src);

return true;

}

在robotframework中这样使用

Drag And Drop Element

[Arguments] ${src} ${tgt}

${js} Get File drag-n-drop.js

${result} Execute Javascript ${js}; return DragNDrop("${src}", "${tgt}");

Capture Page Screenshot

可以看到我们参数是只支持id的,不过也不必紧张,我们可以使用robotframework自带的方法Assign Id To Element来生成一个临时id。这个临时id我们自己建个方法生成唯一的更好。

所以改进后的代码如下,可以支持selenium支持的所有方式,而且id是唯一的,不用再去纠结id取值。

get uuid

${uuid} evaluate (uuid.uuid3(uuid.NAMESPACE_DNS, time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + str(random.random()))).hex modules=random, time, uuid

[Return] ${uuid}

Drag And Drop Element

[Arguments] ${src} ${tgt}

${src_id} get uuid

${tgt_id} get uuid

Assign Id To Element ${src} ${src_id}

Assign Id To Element ${tgt} ${tgt_id}

${js} Get File drag-n-drop.js

${result} Execute Javascript ${js}; return DragNDrop("${src_id}", "${tgt_id}");

Capture Page Screenshot

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值