51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 7085|回复: 6
打印 上一主题 下一主题

[Webdriver]实现鼠标拖拽功能的问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2015-10-20 14:20:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
页面链接:http://www.w3school.com.cn/tiy/t.asp?f=html5_draganddrop
实现代码如下:
                driver.get(baseUrl);
                driver.switchTo().frame("i");
                WebElement drag1 = driver.findElement(By.xpath(".//*[@id='drag1']"));
                WebElement drag2 = driver.findElement(By.xpath(".//*[@id='div1']"));
                action.dragAndDrop(drag1, drag2).build().perform();
                action.release();
                Thread.sleep(1000);
                System.out.println(driver.findElement(By.cssSelector("div img")).getAttribute("src")+"---------------------------");// 这一步报错
在最后一步,验证的过程中出错(另外,从页面来看的话,也没有看到有拖拽的效果)。请了解的同学帮忙指导一下,3 Q


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    无聊
    2020-12-8 11:20
  • 签到天数: 605 天

    连续签到: 1 天

    [LV.9]测试副司令

    2#
    发表于 2015-10-20 14:58:31 | 只看该作者
    本帖最后由 joykao 于 2015-10-20 15:05 编辑

    请问最后一步报错的信息是什么呢?元素没找到?你拖完以后再去定位是定位不到的,那个页面是用到iframe了你默然加载的那个frame不是右边的那个你需要先switch frame到右边的frame才能定位到元素

    @Test
    public void testDragDrop() {
    driver.get
    ("http://www.w3school.com.cn/tiy/t.asp?f=html5_draganddrop");//这个地方要加上switchtoframe方法,定义元素有id就用id,xpath和cssSelector要在足够了解后再用哦
    WebElement source = driver.findElement(By.id("drag1"));
    WebElement target = driver.findElement(By.id("div1"));
    Actions builder = new Actions(driver);
    builder.dragAndDrop(source, target).perform();
    }
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
     楼主| 发表于 2015-10-20 15:07:06 | 只看该作者
    joykao 发表于 2015-10-20 14:58
    请问最后一步报错的信息是什么呢?元素没找到?你拖完以后再去定位是定位不到的,那个页面是用到iframe了你 ...

    报错信息如下:
    Caused by: org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"css selector","selector":"div img"}

    因为在selenium操作页面的过程中,我这里看不到效果。所以添加了最后一个system.out.println
    让selenium自己执行的话,最后就会报上面的错,  如果在执行的等待过程中,我手动拖拽的话,程序就会正常执行通过,并输出src的属性。

    另外,打扰一下,您那边可以正常执行吗?

    我依赖的包为:
    selenium-server-standalone-2.46.0.jar   firefox版本为:41.0.2
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2020-12-8 11:20
  • 签到天数: 605 天

    连续签到: 1 天

    [LV.9]测试副司令

    4#
    发表于 2015-10-20 16:20:10 | 只看该作者
    a787373009 发表于 2015-10-20 15:07
    报错信息如下:
    Caused by: org.openqa.selenium.NoSuchElementException: Unable to locate element: { ...

    代码是没问题的,根本原因就是真的没有拖拽成功,所以你最后的元素属性根本就不是div img 所以报找不到元素,有可能有webdriver版本更新导致之前的有些类库不好用了哦
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
     楼主| 发表于 2015-10-20 16:53:47 | 只看该作者
    joykao 发表于 2015-10-20 16:20
    代码是没问题的,根本原因就是真的没有拖拽成功,所以你最后的元素属性根本就不是div img 所以报找不到元 ...

    恩恩 。 非常感谢
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2016-3-9 11:58
  • 签到天数: 51 天

    连续签到: 1 天

    [LV.5]测试团长

    6#
    发表于 2015-10-21 16:29:18 | 只看该作者
    我用的是python 使用的是JS來進行拖動

    js= "varq=document.documentElement.scrollTop=10000"
            driver.execute_script(js)
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2016-3-9 11:58
  • 签到天数: 51 天

    连续签到: 1 天

    [LV.5]测试团长

    7#
    发表于 2015-10-26 11:12:48 | 只看该作者
    #引入ActionChains类
    from selenium.webdriver.common.action_chains import ActionChains
    #定位元素的原位置
    element=driver.find_element_by_name("xxx")
    #定位元素要移动到的目标位置
    target=driver.find_element_by_name("xxx")
    #执行元素的移动操作
    ActionChains(driver).drag_and_drop(element,target).perform()
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-27 11:46 , Processed in 0.067063 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表