a787373009 发表于 2015-10-20 14:20:12

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

页面链接: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


joykao 发表于 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();
}

a787373009 发表于 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

joykao 发表于 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版本更新导致之前的有些类库不好用了哦:Q

a787373009 发表于 2015-10-20 16:53:47

joykao 发表于 2015-10-20 16:20
代码是没问题的,根本原因就是真的没有拖拽成功,所以你最后的元素属性根本就不是div img 所以报找不到元 ...

恩恩 。 非常感谢

l84222780 发表于 2015-10-21 16:29:18

我用的是python 使用的是JS來進行拖動

js= "varq=document.documentElement.scrollTop=10000"
      driver.execute_script(js)

l84222780 发表于 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]
查看完整版本: [Webdriver]实现鼠标拖拽功能的问题