selenium定位报错
本帖最后由 sunliz 于 2016-8-22 14:24 编辑点击菜单按钮后跳转到新的页面,想定位点击新页面的按钮
使用ID定位报错,xpath和css定位也一样
org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"xpath","selector":"//input[@id=newGroup]"}
用IDE录制的脚本显示ERROR
public void testNewVersion() throws Exception {
driver.get(baseUrl + "/");
// ERROR: Caught exception ]
driver.findElement(By.id("newGroup")).click();
driver.findElement(By.name("stype")).click();
}
尝试switchTo().frame()切换表单也没用,而且点击其他按钮进入的页面表单也叫mainFrame
那个error不太懂怎么回事,也搜不到,求教该怎么办啊
在定位元素之前增加等待时间,等待页面加载完成; 清晨一缕阳光 发表于 2016-8-22 12:11
在定位元素之前增加等待时间,等待页面加载完成;
设置了,也没有用 清晨一缕阳光 发表于 2016-8-22 12:11
在定位元素之前增加等待时间,等待页面加载完成;
设置了,也没有用 清晨一缕阳光 发表于 2016-8-22 12:11
在定位元素之前增加等待时间,等待页面加载完成;
设置了,也没有用 那个切换frame(录制脚本是录不出来这个的)是必须有的,把你完整的脚本贴出来给大伙看看。 若尘_51 发表于 2016-8-22 15:09
那个切换frame(录制脚本是录不出来这个的)是必须有的,把你完整的脚本贴出来给大伙看看。
public class FirstLogin {
public WebDriver driver;
WebElementdrop_down;
@Test
public void login() {
System.out.println("srart selenium");
driver = new FirefoxDriver();
driver.get("http://ip/login");
System.out.println(driver.getTitle());
System.out.println(driver.getCurrentUrl());
/*登录
*/
driver.findElement(By.id("username")).sendKeys("username");
driver.findElement(By.id("password")).sendKeys("password");
driver.findElement(By.className("login-but")).click();
System.out.println("The title after login is:"+driver.getTitle()); //显示登录后的title
System.out.println("The url after login is:"+driver.getCurrentUrl());//显示登录后的url
//跳转到创意管理页面
driver.findElement(By.xpath("//ul[@id='menubox']/li/a/span")).click();
driver.findElement(By.linkText("推广计划管理")).click();
driver.findElement(By.linkText("创意管理")).click();
//跳转的新建创意组页面
driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);
driver.switchTo().frame("mainFrame");
driver.findElement(By.id("newGroup")).click();//*[@id="newGroup"]
driver.findElement(By.name("stype")).click();
}
@AfterTest
public void afterTest() {
//driver.close();
}
}
sunliz 发表于 2016-8-22 15:15
public class FirstLogin {
public WebDriver driver;
WebElementdrop_down;
是不是这下面不止一个id叫newGroup的元素啊。 你换Xpath的方式试试 换成Xpath或者name定位试试,或者前面加上元素的父节点,但是不加事件
比如
driver.findElement(By.id("searchForm"))
driver.findElement(By.id("newGroup")).click() 有iframe的,切换下 掉渣饼 发表于 2016-8-22 16:02
换成Xpath或者name定位试试,或者前面加上元素的父节点,但是不加事件
比如
driver.findElement(By.id("s ...
我尝试了一下,发现父节点也无法定位,再往上iframe里面的都不行,iframe上面的<div class="conent_frame">就可以定位了,难道driver.switchTo().frame("mainFrame");这句没跳转成功? 若尘_51 发表于 2016-8-22 15:53
是不是这下面不止一个id叫newGroup的元素啊。 你换Xpath的方式试试
xpath和CSS都试过的,不行:'( joykao 发表于 2016-8-22 16:39
有iframe的,切换下
切换了啊,但是感觉没成功的样子,里面的元素都定位不到 sunliz 发表于 2016-8-22 17:11
xpath和CSS都试过的,不行
//跳转的新建创意组页面
driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);
driver.switchTo().frame("mainFrame");
driver.findElement(By.id("newGroup")).click();//*[@id="newGroup"]
driver.findElement(By.name("stype")).click();
那就有可能是定位的焦点并不在这个新建创意组页面上,先切换下页面,再切换frame 什么时候把HTML的代码图加上了:o
那会看的时候都没有。
明显的有iframe,需要switchTo切换的。直接切换不行的,可以先切换到default frame ,然后再切换到你需要的frame尝试。 把你的<head>标签点开看看,看里面都写的是什么。会不会在这个标签里面还有其他的frame? sunliz 发表于 2016-8-22 17:10
我尝试了一下,发现父节点也无法定位,再往上iframe里面的都不行,iframe上面的就可以定位了,难道driver ...
感觉你是不是在浏览器点击菜单按钮后,重新打开了一个窗口,等于现在浏览器中有两个窗口,如果是这样你可以去网上了解下获取当前窗口句柄与切换的用法,我知道用Python+selenium怎么写,但是用java+selenium不太熟悉,你可以百度下 掉渣饼 发表于 2016-8-22 21:10
感觉你是不是在浏览器点击菜单按钮后,重新打开了一个窗口,等于现在浏览器中有两个窗口,如果是这样你可 ...
窗口句柄我试过,获取到的是同一个句柄,所以应该不是,我再试试他们上面说的 清晨一缕阳光 发表于 2016-8-22 17:58
把你的标签点开看看,看里面都写的是什么。会不会在这个标签里面还有其他的frame?
<head>里面是一些link 和script 排查下:
(1)跳转的新建创意组页面之后,打印下当前的ULR,确认是否进入该页面。
(2)如果确认了进入该页面,你试试脚本直接从这个页面开始,然后执行下面的动作。(另外查看一下元素,是不是还有其他ifame)
页:
[1]