517451737 发表于 2013-11-8 13:09:00

selenium+webdriver中对象识别问题

本帖最后由 517451737 于 2013-11-8 13:12 编辑


新人请教下,selenium中,请问这个网页中可以直接对标记的那个对象操作吗?
需要做其他操作吗?

joykao 发表于 2013-11-11 13:37:57

回复 1# 517451737


    楼主你圈出来的想说明什么呢?这是个链接,如果你想找到这个元素的话。。有好多方法

linkText cssSelector。。。。等等都可以。。

517451737 发表于 2013-11-11 16:17:18

回复 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:20:00

本帖最后由 joykao 于 2013-11-11 17:30 编辑

回复 3# 517451737

你这个找出来的是不对的哇。。你的cssSelector的值应该是acol_7 这个class属性值有好多元素对应着呢。。。

driver.findElement(By.cssSelector("a")).click

517451737 发表于 2013-11-12 10:17:27

回复 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();
        }
}

joykao 发表于 2013-11-12 10:26:31

回复 5# 517451737


    这代码可读性也太差了吧。。。让我猜?

不知道是不是公网。。。如果是可以在线调试下。。。那样比较好分析。。这样。。一头雾水。。。:sleepy:

517451737 发表于 2013-11-12 10:49:57

回复 6# joykao


    是公网,不知道是怎么回事,代码粘贴到这就成这样了!网站:www.elsyy.com   
用户名:li5555/654321
如果有时间就请帮我看看,非常感谢!

六月天 发表于 2013-11-12 13:23:42

问题很简单,这个登录是用ajax完成的,而ajax不会引起整个页面刷新,对webdriver来说,他无法判断登录请求发起后是什么时候完成的。导致你的点击登录按钮之后,webdriver直接去页面找用户中心的链接了,而这个时候登录请求才发出去,还没有收到相应呢,也就是还处于未登录状态的页面,当然找不到你要的链接。所以你必须自己手动在点击登录按钮后,做一个等待,否则永远是失败的。

517451737 发表于 2013-11-12 14:29:04

回复 8# 六月天


    嗯,的确是这个原因!多谢多谢,还是需要师傅指导啊!

aline_excellent 发表于 2014-9-29 11:13:59

六月天 发表于 2013-11-12 13:23
问题很简单,这个登录是用ajax完成的,而ajax不会引起整个页面刷新,对webdriver来说,他无法判断登录请求 ...

麻烦您,请问如何写等待的代码呢?多谢!!

aline_excellent 发表于 2014-9-29 11:14:53

517451737 发表于 2013-11-12 14:29
回复 8# 六月天




您好,我和你遇到了同样的问题,请问你怎么写的等待的代码呢?

517451737 发表于 2014-10-20 11:01:03

aline_excellent 发表于 2014-9-29 11:14
您好,我和你遇到了同样的问题,请问你怎么写的等待的代码呢?

dr.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);用这个就可以吧!

517451737 发表于 2014-10-20 11:01:20

aline_excellent 发表于 2014-9-29 11:14
您好,我和你遇到了同样的问题,请问你怎么写的等待的代码呢?

dr.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);用这个就可以吧!
页: [1]
查看完整版本: selenium+webdriver中对象识别问题