51Testing软件测试论坛

标题: 求助关于Selenium+Python自动测试的元素定位 [打印本页]

作者: 阳光域    时间: 2016-6-2 15:55
标题: 求助关于Selenium+Python自动测试的元素定位
最近在自学Selenium+Python的自动化测试,刚起步,关于selenium的元素定位不太清楚,资料讲解不是很详细,特此来求助。
问题是:比如百度贴吧登录,弹出的是对话框,对话框的元素如何定位?二次定位怎么做?可否详细给个代码
http://tieba.baidu.com/
作者: 阳光域    时间: 2016-6-2 15:56
C:\Users\123\Pictures
作者: 阳光域    时间: 2016-6-2 15:57
晕,怎么添加图片
作者: 阳光域    时间: 2016-6-2 16:17
#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"
为什么这个不对?
作者: 阳光域    时间: 2016-6-2 16:28
求指点。。。
作者: 若尘_51    时间: 2016-6-3 10:42
这个是javascript的一种生成弹出窗口的方法,它和一般弹窗不同,会将父窗口的所有资源(包括selenium)挂起
,直至新窗口处理完毕才能返回父窗口。      
处理思路:
注入以下javascript代码,将脚本改写,改成用window.open打开新窗口再进行控制。

我对javascript,html这些都不熟悉,没有研究出来,坐等大神的出现。
作者: 清晨一缕阳光    时间: 2016-6-3 10:43
建议楼主先看看Selenium的定位方式方面的资料,只要掌握了常用的定位方式的原理,具体的定位根本不存在问题。
作者: hzieechenwei    时间: 2016-6-3 15: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();

这是测试通过的代码
作者: 若尘_51    时间: 2016-6-3 15:54
hzieechenwei 发表于 2016-6-3 15:20
var driver = new ChromeDriver();
            driver.Url = "http://tieba.baidu.com/";

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




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2