求助关于Selenium+Python自动测试的元素定位
最近在自学Selenium+Python的自动化测试,刚起步,关于selenium的元素定位不太清楚,资料讲解不是很详细,特此来求助。问题是:比如百度贴吧登录,弹出的是对话框,对话框的元素如何定位?二次定位怎么做?可否详细给个代码
http://tieba.baidu.com/ C:\Users\123\Pictures 晕,怎么添加图片:L #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"
为什么这个不对? 求指点。。。 这个是javascript的一种生成弹出窗口的方法,它和一般弹窗不同,会将父窗口的所有资源(包括selenium)挂起
,直至新窗口处理完毕才能返回父窗口。
处理思路:
注入以下javascript代码,将脚本改写,改成用window.open打开新窗口再进行控制。
我对javascript,html这些都不熟悉,没有研究出来,坐等大神的出现。 建议楼主先看看Selenium的定位方式方面的资料,只要掌握了常用的定位方式的原理,具体的定位根本不存在问题。 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();
这是测试通过的代码 hzieechenwei 发表于 2016-6-3 15:20
var driver = new ChromeDriver();
driver.Url = "http://tieba.baidu.com/";
牛,确实在谷歌浏览器上可以执行,但在火狐浏览器运行就不行了。大神帮忙看看火狐呗
ps:原来是不同的浏览器运行还不一样。
页:
[1]