阳光域 发表于 2016-6-2 15:55:04

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

最近在自学Selenium+Python的自动化测试,刚起步,关于selenium的元素定位不太清楚,资料讲解不是很详细,特此来求助。
问题是:比如百度贴吧登录,弹出的是对话框,对话框的元素如何定位?二次定位怎么做?可否详细给个代码
http://tieba.baidu.com/

阳光域 发表于 2016-6-2 15:56:27

C:\Users\123\Pictures

阳光域 发表于 2016-6-2 15:57:11

晕,怎么添加图片:L

阳光域 发表于 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"
为什么这个不对?

阳光域 发表于 2016-6-2 16:28:25

求指点。。。

若尘_51 发表于 2016-6-3 10:42:03

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

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

清晨一缕阳光 发表于 2016-6-3 10:43:29

建议楼主先看看Selenium的定位方式方面的资料,只要掌握了常用的定位方式的原理,具体的定位根本不存在问题。

hzieechenwei 发表于 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")).SendKeys("test");
            loginForm.FindElement(By.CssSelector("input")).SendKeys("test");
            loginForm.FindElement(By.CssSelector("input")).Click();

这是测试通过的代码

若尘_51 发表于 2016-6-3 15:54:49

hzieechenwei 发表于 2016-6-3 15:20
var driver = new ChromeDriver();
            driver.Url = "http://tieba.baidu.com/";



牛,确实在谷歌浏览器上可以执行,但在火狐浏览器运行就不行了。大神帮忙看看火狐呗
ps:原来是不同的浏览器运行还不一样。
页: [1]
查看完整版本: 求助关于Selenium+Python自动测试的元素定位