51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2088|回复: 8
打印 上一主题 下一主题

求助关于Selenium+Python自动测试的元素定位

[复制链接]
  • TA的每日心情
    无聊
    2016-5-3 17:15
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    跳转到指定楼层
    1#
    发表于 2016-6-2 15:55:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    最近在自学Selenium+Python的自动化测试,刚起步,关于selenium的元素定位不太清楚,资料讲解不是很详细,特此来求助。
    问题是:比如百度贴吧登录,弹出的是对话框,对话框的元素如何定位?二次定位怎么做?可否详细给个代码
    http://tieba.baidu.com/
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2016-5-3 17:15
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    2#
     楼主| 发表于 2016-6-2 15:56:27 | 只看该作者
    C:\Users\123\Pictures
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2016-5-3 17:15
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    3#
     楼主| 发表于 2016-6-2 15:57:11 | 只看该作者
    晕,怎么添加图片
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2016-5-3 17:15
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    4#
     楼主| 发表于 2016-6-2 16:17:02 | 只看该作者
    #coding=utf-8
    from selenium import webdriver
    import time
    driver=webdriver.Firefox()
    driver.get("http://tieba.baidu.com/")
    time.sleep(3)
    #点击登录链接
    driver.find_element_by_link_text(u"登录").click()
    #通过二次定位找到用户名输入框
    div=driver.find_element_by_class_name("tang-body").find_element_by_name("userName")
    div.send_keys("15829589635")
    #输入登录密码
    driver.find_element_by_name("password").send_keys("snqc0924aKO")
    #点击登录
    driver.find_element_by_id("TANGRAM__PSP_8__submit").click()
       
    print "good"
    为什么这个不对?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2017-11-7 16:44
  • 签到天数: 290 天

    连续签到: 1 天

    [LV.8]测试军长

    6#
    发表于 2016-6-3 10:42:03 | 只看该作者
    这个是javascript的一种生成弹出窗口的方法,它和一般弹窗不同,会将父窗口的所有资源(包括selenium)挂起
    ,直至新窗口处理完毕才能返回父窗口。      
    处理思路:
    注入以下javascript代码,将脚本改写,改成用window.open打开新窗口再进行控制。

    我对javascript,html这些都不熟悉,没有研究出来,坐等大神的出现。

    评分

    参与人数 1测试积点 +10 收起 理由
    lsekfe + 10 积极回复获得测试积点10

    查看全部评分

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2024-11-1 14:56
  • 签到天数: 1182 天

    连续签到: 1 天

    [LV.10]测试总司令

    7#
    发表于 2016-6-3 10:43:29 | 只看该作者
    建议楼主先看看Selenium的定位方式方面的资料,只要掌握了常用的定位方式的原理,具体的定位根本不存在问题。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2016-6-3 15:20:20 | 只看该作者
    var driver = new ChromeDriver();
                driver.Url = "http://tieba.baidu.com/";

                driver.FindElementByCssSelector("a.btn_login").Click();
                Thread.Sleep(3000);

                var loginForm = driver.FindElementByCssSelector("#TANGRAM__PSP_8__form");
                loginForm.FindElement(By.CssSelector("input[name='userName']")).SendKeys("test");
                loginForm.FindElement(By.CssSelector("input[name='password']")).SendKeys("test");
                loginForm.FindElement(By.CssSelector("input[value='登录']")).Click();

    这是测试通过的代码
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2017-11-7 16:44
  • 签到天数: 290 天

    连续签到: 1 天

    [LV.8]测试军长

    9#
    发表于 2016-6-3 15:54:49 | 只看该作者
    hzieechenwei 发表于 2016-6-3 15:20
    var driver = new ChromeDriver();
                driver.Url = "http://tieba.baidu.com/";

    牛,确实在谷歌浏览器上可以执行,但在火狐浏览器运行就不行了。大神帮忙看看火狐呗
    ps:原来是不同的浏览器运行还不一样。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-11 14:51 , Processed in 0.068260 second(s), 26 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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