vipwork 发表于 2012-10-10 10:44:43

【已解决】求助,请看看这个DIV层下的元素selenium-webdriver如何获取?

本帖最后由 vipwork 于 2012-10-11 16:54 编辑

请大家帮忙看看用什么定位器可以获取到红框内的<a>元素。这个是一个第三级菜单来的,请看图



vipwork 发表于 2012-10-11 16:40:37

问题解决了。解决的方法如下:WebElement menu3 = driver.findElement(By.xpath("//a[@class='x-menu-item' and text()='流程']"));
                actions.moveToElement(menu3);
                actions.perform();当另一个问题又出现了,这个movetoelement方法非常不好用,貌似作用只是模拟鼠标滑过这个链接而已,并不能达到mouseover的效果,即鼠标停放在这个链接上的效果

vipwork 发表于 2012-10-11 16:53:23

经过两天不懈的努力,终于找到方法了。看来还是api看得太少啊。用下面代码可以模拟鼠标停放在链接上的效果。WebElement menu1 = driver.findElement(By.xpath("//a[@class='white' and text()='一级菜单']"));
                //actions.moveToElement(menu1);
                actions.clickAndHold(menu1);
                actions.perform();       
                WebElement menu2 = driver.findElement(By.xpath("//a"));
                //actions.moveToElement(menu2);
                actions.clickAndHold(menu2);
                actions.perform();
                Thread.sleep(1000);
                driver.findElement(By.xpath("//a[@class='x-menu-item' and text()='三级菜单']")).findElement(By.xpath("..")).click();
                driver.findElement(By.xpath("//a[@class='x-menu-item' and text()='三级菜单']")).click();
               

vipwork 发表于 2012-10-12 10:29:56

再次回来说明一下,3楼贴的解决方法是有缺陷的。不过这个是selenium2与IE的兼容性问题。简答来说,当使用InternetExplorerDriver时,使用上面方法时,鼠标指针不能放在浏览器内,否则,将造成最后一步:driver.findElement(By.xpath("//a[@class='x-menu-item' and text()='三级菜单']")).click();
click第三级菜单抛异常:ElementIsNotVisibalException

具体可以参考下面贴中jim evans的回答:
https://groups.google.com/forum/?fromgroups#!topic/webdriver/WeuSwYemM4E

所以,在回放脚本使,鼠标指针最好停放在任务栏上,不过如果你不是用IE而是用FIREFOX的话,倒不用担心这个问题。其实说到底就是selenium2限制了fireeven的方法,实在是相当的不方便。另外,可以在selenium2中使用selenium1的方法:ISelenium selenium = new WebDriverBackedSelenium(driver, baseURL);
selenium.Start();
selenium.MouseOver(xpathA);

pcxty 发表于 2013-1-6 23:51:42

不错

testingWJZ 发表于 2016-5-24 10:01:47

用select 啥

testingWJZ 发表于 2016-5-24 10:06:00

Select select =new Select(driver.findElement(By.id("***")));
select.selectByVisibleText("流程");

你试试这种方式
页: [1]
查看完整版本: 【已解决】求助,请看看这个DIV层下的元素selenium-webdriver如何获取?