51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 12627|回复: 12
打印 上一主题 下一主题

selenium+webdriver中对象识别问题

[复制链接]
  • TA的每日心情
    无聊
    2015-7-12 20:40
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    跳转到指定楼层
    1#
    发表于 2013-11-8 13:09:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 517451737 于 2013-11-8 13:12 编辑


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

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2020-12-8 11:20
  • 签到天数: 605 天

    连续签到: 1 天

    [LV.9]测试副司令

    2#
    发表于 2013-11-11 13:37:57 | 只看该作者
    回复 1# 517451737


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

    linkText cssSelector。。。。等等都可以。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2015-7-12 20:40
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    3#
     楼主| 发表于 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"}
    请问主要是什么问题?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2020-12-8 11:20
  • 签到天数: 605 天

    连续签到: 1 天

    [LV.9]测试副司令

    4#
    发表于 2013-11-11 17:20:00 | 只看该作者
    本帖最后由 joykao 于 2013-11-11 17:30 编辑

    回复 3# 517451737

    你这个找出来的是不对的哇。。你的cssSelector的值应该是a[title=用户中心]col_7 这个class属性值有好多元素对应着呢。。。

    driver.findElement(By.cssSelector("a[class='col_7'][title='用户中心']")).click
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2015-7-12 20:40
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    5#
     楼主| 发表于 2013-11-12 10:17:27 | 只看该作者
    回复 [url=http://bbs.51testing.com/redirect.php?goto=findpost&pid=3201057&ptid=994646]4#[/url] 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[1]"));
                    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[class='col_7'][title='用户中心']")).click();
            }
    }
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2020-12-8 11:20
  • 签到天数: 605 天

    连续签到: 1 天

    [LV.9]测试副司令

    6#
    发表于 2013-11-12 10:26:31 | 只看该作者
    回复 5# 517451737


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

    不知道是不是公网。。。如果是可以在线调试下。。。那样比较好分析。。这样。。一头雾水。。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2015-7-12 20:40
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    7#
     楼主| 发表于 2013-11-12 10:49:57 | 只看该作者
    回复 6# joykao


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

    使用道具 举报

    该用户从未签到

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

    使用道具 举报

  • TA的每日心情
    无聊
    2015-7-12 20:40
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    9#
     楼主| 发表于 2013-11-12 14:29:04 | 只看该作者
    回复 8# 六月天


        嗯,的确是这个原因!多谢多谢,还是需要师傅指导啊!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

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

    麻烦您,请问如何写等待的代码呢?多谢!!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2014-9-29 11:14:53 | 只看该作者

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

    使用道具 举报

  • TA的每日心情
    无聊
    2015-7-12 20:40
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    12#
     楼主| 发表于 2014-10-20 11:01:03 | 只看该作者
    aline_excellent 发表于 2014-9-29 11:14
    您好,我和你遇到了同样的问题,请问你怎么写的等待的代码呢?

    dr.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);  用这个就可以吧!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2015-7-12 20:40
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    13#
     楼主| 发表于 2014-10-20 11:01:20 | 只看该作者
    aline_excellent 发表于 2014-9-29 11:14
    您好,我和你遇到了同样的问题,请问你怎么写的等待的代码呢?

    dr.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);  用这个就可以吧!
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-24 00:15 , Processed in 0.081057 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表