selenium+webdriver中对象识别问题
本帖最后由 517451737 于 2013-11-8 13:12 编辑新人请教下,selenium中,请问这个网页中可以直接对标记的那个对象操作吗?
需要做其他操作吗? 回复 1# 517451737
楼主你圈出来的想说明什么呢?这是个链接,如果你想找到这个元素的话。。有好多方法
linkText cssSelector。。。。等等都可以。。 回复 2# joykao
我试过很多方法都报错呢,在这前面有个iframe中的登录框,登录成功后,会有这些链接!
但是我使用很多方法都报下面这种错误:
Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"css selector","selector":"col_7"}
请问主要是什么问题? 本帖最后由 joykao 于 2013-11-11 17:30 编辑
回复 3# 517451737
你这个找出来的是不对的哇。。你的cssSelector的值应该是acol_7 这个class属性值有好多元素对应着呢。。。
driver.findElement(By.cssSelector("a")).click 回复 4# joykao
唉,还是报错呢,下面是登录的代码,请帮我看看是什么问题:
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
public class TestElsyy {
public static void main(String[] args) {
WebDriver driver = new FirefoxDriver();
driver.get("http://www.elsyy.com");
WebElement linkLogin = driver.findElement(By.xpath("//*[@id='loginReg']/a"));
linkLogin.click();
driver.switchTo().frame("loginDialog");
System.out.println("切换后标题:" + driver.getTitle());
driver.findElement(By.id("userName")).clear();
driver.findElement(By.id("userName")).sendKeys("elsyytech");
driver.findElement(By.id("password")).clear();
driver.findElement(By.id("password")).sendKeys("123456");
try{
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
driver.findElement(By.xpath("//*[@id='commit']/img")).click();
driver.switchTo().defaultContent();
driver.findElement(By.cssSelector("a")).click();
}
} 回复 5# 517451737
这代码可读性也太差了吧。。。让我猜?
不知道是不是公网。。。如果是可以在线调试下。。。那样比较好分析。。这样。。一头雾水。。。:sleepy: 回复 6# joykao
是公网,不知道是怎么回事,代码粘贴到这就成这样了!网站:www.elsyy.com
用户名:li5555/654321
如果有时间就请帮我看看,非常感谢! 问题很简单,这个登录是用ajax完成的,而ajax不会引起整个页面刷新,对webdriver来说,他无法判断登录请求发起后是什么时候完成的。导致你的点击登录按钮之后,webdriver直接去页面找用户中心的链接了,而这个时候登录请求才发出去,还没有收到相应呢,也就是还处于未登录状态的页面,当然找不到你要的链接。所以你必须自己手动在点击登录按钮后,做一个等待,否则永远是失败的。 回复 8# 六月天
嗯,的确是这个原因!多谢多谢,还是需要师傅指导啊! 六月天 发表于 2013-11-12 13:23
问题很简单,这个登录是用ajax完成的,而ajax不会引起整个页面刷新,对webdriver来说,他无法判断登录请求 ...
麻烦您,请问如何写等待的代码呢?多谢!! 517451737 发表于 2013-11-12 14:29
回复 8# 六月天
您好,我和你遇到了同样的问题,请问你怎么写的等待的代码呢? aline_excellent 发表于 2014-9-29 11:14
您好,我和你遇到了同样的问题,请问你怎么写的等待的代码呢?
dr.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);用这个就可以吧! aline_excellent 发表于 2014-9-29 11:14
您好,我和你遇到了同样的问题,请问你怎么写的等待的代码呢?
dr.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);用这个就可以吧!
页:
[1]