RobotFramework:拖放 Selenium2 关键字似乎不起作用

2024-05-23

我正在测试 Web 应用程序(使用 RobotFramework 和 Selenium2Library),其中有几个点需要一些拖放操作。我尝试了拖放关键字,但它无法正常工作。

由于我无法通过生产应用程序,因此我使用下面的页面重新创建了问题:https://html5demos.com/drag/ https://html5demos.com/drag/

我的代码是:

*** Settings ***
Library  Selenium2Library

*** Variables ***
${URL} =  https://html5demos.com/drag/

*** Test Cases ***

Prepare Browser
    Open_Browser  ${url}  browser=chrome
    Maximize Browser Window

Make Test
    #Drag And Drop  //*[@id="one"]  //*[@id="bin"]
    #Drag And Drop  //*[@id="two"]  //*[@id="bin"]
    Capture Page Screenshot
    Sleep  1

Close All
    Close Browser

已尝试使用 Python 2.7 和 3.6。

我得到的输出是测试显示为 PASS,但我看不到拖放操作的任何实际结果(在我的生产应用程序和上面链接的示例页面中)。拖放测试结果截图 https://i.stack.imgur.com/xlyEm.jpg

当我查看测试期间浏览器中发生的情况时,我注意到该对象变成了可拖动的(引号“拖我”添加在括号中)但测试代表了一个日志时间。当鼠标光标移动时,测试会继续上面提到的int PASS,但没有实际效果。

尝试过最新的 Chrome、Firefox、IE。也尝试过使用关键字鼠标按下, 鼠标移到, Mouse Up,但结果相同。

这是执行报告中的日志截图:执行报告截图 https://i.stack.imgur.com/NimlT.jpg

我将不胜感激任何帮助或解决方法来正确完成它。


从 [so] 上的其他帖子来看,此功能似乎运行得不太好。因此,大多数答案都包含使用 JavaScript 创建解决方案的建议。我已经改编了在此找到的示例所以答案 https://stackoverflow.com/a/38889823/6152737使用机器人框架:

拖放.js

var dataTransfer=
                {
                    dropEffect:'',
                    effectAllowed:'all',
                    files:[],
                    items:{},
                    types:[],
                    setData:function(format,data)
                    {
                        this.items[format]=data;
                        this.types.push(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;
}           

拖放机器人

*** Settings ***
Library  SeleniumLibrary
Library  OperatingSystem    

Suite Setup       Open_Browser    ${url}    Chrome
Suite Teardown    Close Browser

*** Variables ***
${URL} =  https://html5demos.com/drag/

*** Test Cases ***
Make Test
    ${js}        Get File              drag-n-drop.js
    ${result}    Execute Javascript    ${js}; return DragNDrop("two", "bin");
    
    Capture Page Screenshot
    Sleep  1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RobotFramework:拖放 Selenium2 关键字似乎不起作用 的相关文章

随机推荐