我正在用selenium测试一个django应用程序,我的一个页面使用了jquery ui tabs元素.其中一个选项卡包含一个列出一些用户的简单表,并通过ajax加载.使用该应用程序时,该选项卡工作得很好,但是当使用selenium自动执行测试时,该选项卡似乎不会加载它的内容!我自己在python中编写测试.起初,我正在使用selenium RC 的click方法,但正如我从先前的测试中学到的那样,当涉及到锚标签时,这是相当错误的,所以我采用了之前使用的解决方案:wait_for_condition方法和明确地调用了tab单击事件(甚至是load事件!)然而选项卡仍然无效!
我在这里绝望,我的大多数测试依赖于那个页面,其中几乎一半都在那张桌子上,但是,唉,似乎selenium搞砸了javascript!(我在课堂上有其他测试,它们运行得很好,所以在服务器级别没有任何奇怪的事情,这似乎是由客户端的selenium引起的问题)我的测试代码与此类似:
class TestMyApp(TransactionTestCase):
urls = 'myapp.test_urls'
def setUp(self):
self.verificationErrors = []
self.selenium = selenium("localhost", 4444, "*chrome", "http://localhost:8000/")
self.selenium.start()
#self.selenium.set_speed(2000)
self.selenium.window_maximize()
def test_users_list(self):
"""Test that an app's users are correctly listed"""
sel = self.selenium
users = []
for u in range(settings.FREE_USER_LIMIT/2):
users.append(self.app.users.create(name="testUser_%s"%uuid4()))
sel.open("/")
sel.wait_for_page_to_load("30000")
sel.wait_for_condition('selenium.browserbot.getCurrentWindow().jQuery("#tabs").tabs("select",1);\
selenium.browserbot.getCurrentWindow().jQuery("#tabs").tabs("load",1);',
3000)
for user in users:
try: self.failUnless(sel.is_text_present(user.name))
except AssertionError, e: self.verificationErrors.append(str(e))
try: self.failUnless(sel.is_text_present(str(user.added.date())))
except AssertionError, e: self.verificationErrors.append(str(e))
def tearDown(self):
self.selenium.stop()
self.assertEqual([], self.verificationErrors)
Run Code Online (Sandbox Code Playgroud) 嘿伙计们,我现在正在使用Selenium RC做一些测试.我使用的驱动程序是python.但是现在,我遇到了一个问题,那就是:每次Selenium RC运行并打开一个url时,它会打开2个窗口,一个用于记录,另一个用于显示HTML内容.但我不能用脚本关闭它们.
这是我的剧本:
#!/usr/bin/env python
#-*-coding:utf-8-*-
from selenium import selenium
def main():
sel = selenium('localhost', 4444, '*firefox', 'http://www.sina.com.cn/')
sel.start()
try:
sel.open('http://www.sina.com.cn/')
except Exception, e:
print e
else:
print sel.get_title()
sel.close()
sel.stop()
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
这很容易理解.我真正想要的是关闭所有硒打开的窗户.我尝试过close()和stop(),但它们都不起作用.
我一直在使用Selenium RC进行功能测试.
当测试进入我们站点的登录页面并切换到HTTPS时,我一直遇到问题.
我一直在改变设置,但是每个浏览器都被抛弃了.
使用**iehta*和**chrome*作为我的浏览器和信任所有SSL证书并确保清洁会话 设置我可以让FF3登录我们的网站,但IE会抛出"这个网站的安全证书有问题." 错误.(我已经安装了证书)
为什么不信任所有证书都适用于IE?
我需要以REST格式测试Web API函数.目前使用Selenium RC对网站进行功能测试.并使用XmlUnit和HttpClient功能测试我们的REST API.但是,如果我们能够真正将功能测试代码分离到所有的硒中,那么生活似乎会更容易.特别是使用Selenium 2.0的WebDriver,使用它来测试XML响应比以往任何时候都容易XPath.
我在Pro XmlUnit+HttpClient营地的想法:
我在Pro Selenium WebDriver营地的想法:
我们正在使用Spring 3和hibernate.什么是最好的功能测试我们的API?
testing selenium functional-testing selenium-rc web-api-testing
我对Selenium RC有困难.当尝试在Python中运行脚本时,我看到消息"无法导入名称webdriver".
我可能会遗漏一些非常基本的东西.让我解释一下我采取的每一步(更好的是过于细化而不是太模糊......):
下载并设置Java Development Kit并设置Paths.命令'Java -version'产生"1.6.0_26"
下载Selenium RC独立服务器.
启动服务器
下载并安装了Python 2.6 32位版本
从http://selenium.googlecode.com/files/selenium-remote-control-1.0.3.zip下载了Python绑定.从zip文件中,我已将selenium.py复制到我的Python27\Libs目录中.
在Selenium IDE中创建了一个脚本.导出为Python.
当我尝试从IDLE运行脚本时,我看到消息"ImportError:无法导入名称webdriver".我正在使用的脚本开始
from selenium import webdriver
Run Code Online (Sandbox Code Playgroud)
我在selenium.py中看不到名为'webdriver'的函数的定义.这是错误的文件吗?我很困惑.
没有引用'import webdriver'的脚本工作得很好.
谷歌搜索是非常无益的,大多数教程要么不完整,要么假设Linux环境(我正在使用Windows).
这是Selenium 1与Selenium 2的问题吗?我需要Selenium 2绑定吗?它们与我的不同吗?
任何帮助表示赞赏.
关于XPath中的第N个元素已经有了一些讨论:
我正在使用Selenium和PHPUnit进行功能测试.我的问题是在具有大表单的页面上,第N个选择器不起作用.我有80个输入字段(使用Selenium的getXpathCount('// input')调用来获取确切的数字) - 我想迭代80个字段并输入一些文本.我已经尝试过但不工作(N是索引变量):
//input[N]
//input[position()=N]
input[N]
(//input)[N]
(.//input)[N]
css=input:nth-of-type(N)
Run Code Online (Sandbox Code Playgroud)
以及上述所有混合物.它通常会触发一个Exception说:在N = 2时找不到元素.我为浏览器尝试了几个XPath工具,因此像Chrome中的XPathEvaluator这样的原生扩展 - 几乎都给了我正确的结果.所以看起来Seleniums XPath解析器的工作方式有点不同.
你怎么看?我想念一件大事吗?
更新:这里你是我的解决方案:getAllFields():http://release.seleniumhq.org/selenium-remote-control/0.9.0/doc/java/com/thoughtworks/selenium/DefaultSelenium.html#getAllFields ()和然后我迭代.
它实际上并没有解决原来的问题,所以我仍然对答案感兴趣.
谢谢!
我试图在Selenium 2.0 WebDriver中使用CSS选择器单击一个按钮.问题是我能够与Selenium RC一起运行的脚本不能与WebDriver一起使用.码:
Selenium RC:
selenium.click("css=.gwt-Button:contains('Run Query')");
Run Code Online (Sandbox Code Playgroud)
哪个工作绝对没问题.
Selenium WebDriver:
driver.findElement(By.cssSelector(".gwt-Button:contains('Run Query')")).click();
Run Code Online (Sandbox Code Playgroud)
这不起作用.我正在使用:selenium-server-standalone-2.9.0.jar和Firefox 5.0版.任何人都可以帮我弄清楚为什么cssSelector不使用WebDriver?
我需要输入数据到iframe.我提到了
但selenium.selectFrame(<xpath>)返回:Element not found error并没有为此定义css iframe.
使用firebug:
<iframe frameborder="0" allowtransparency="true" tabindex="0" src="" title="Rich text editor, templateWizardCKEditor1, press ALT 0 for help." style="width: 100%; height: 100%;"/>
Run Code Online (Sandbox Code Playgroud)
什么可以解决这个问题?
我在唯一元素ID之间无法使用正则表达式。
这是HTML代码
<td align="left" style="vertical-align: top; ">
<span class ="radiobutton" id="mainId:gen_id_12e3:radiospan1e">
<input type="radio" name="radio1" value="on" id="radio1" tabindex="0" checked>
<label for="id-2024">Yes</label>
Run Code Online (Sandbox Code Playgroud)
使用xpath,我在元素ID之间使用下面的selenium命令和(。*),它可以正常工作。
selenium.click("xpath=//span[@id, 'mainId.*radiospan1e']");
Run Code Online (Sandbox Code Playgroud)
但是,我不能在CSS中做同样的事情,因为它们的ID末尾有$,开头是^,而在页面的任何位置都有*,但是我希望ID以mainId开头并带有一些正则表达式,并以唯一ID。
任何帮助,将不胜感激。
我正在使用eclipse-jee-luna-SR1-win32-x86_64用于Selenium(Selenium版本是selenium-standalone-2.44.0和selenium-java-2.44.0).我收到了错误The type is deprecated.我的系统上安装了JavaSE-1.8.
> java -version
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b18)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的代码:
import com.thoughtworks.selenium.DefaultSelenium;
import com.thoughtworks.selenium.Selenium;
public class FirstTestCase {
public static void main(String[] args) {
System.out.println("Hello World");
Selenium selenium = new DefaultSelenium("localhost", 5555, "chrome", "http://www.xxxxxxyxyxyx.com");
}
}
Run Code Online (Sandbox Code Playgroud)