如何在Selenium中获取HTTP状态代码?
例如,我可以测试一下,如果浏览器请求/ user/27并且没有ID = 27的用户,则返回HTTP 404?
我的主要兴趣是Selenium RC,但如果有人知道"正常"硒的答案,我可以很容易地将其翻译成RC.
/皮特
什么是从字符串如取出口音的最有效的方式ÈâuÑ变成Eaun?
是否有一种简单的,内置的方式,我缺少或正则表达式?
我想使用Java与WebDriver(Selenium 2)一起使用JavaScript.
我已经按照一些指南和" 入门"页面进行操作:第一行有一条指令可以运行:
$ ./go webdriverjs
Run Code Online (Sandbox Code Playgroud)
我的问题:从哪个文件夹/位置运行/执行上面提到的命令?
Ruby在Selenium之上有一个很棒的抽象层,称为Capybara,您可以使用它进行功能/接受/集成测试.它还有另一个名为Cucumber的库,它更进了一步,让你真正用英语编写测试.
这两个库都是在Selenium之上构建的,可以用来测试任何主要的浏览器,但由于它们的抽象层,使用它们编写测试非常容易(好吧,就像功能测试一样简单).
我的问题是:Python有类似的东西吗?我发现Pythonistas使用各种工具进行功能测试但是......
A)Splinter:不使用Selenium(并且没有IE驱动程序)
-EDIT- 看来Spliter现在确实使用了Selenium(见下面的答案).
B)Alfajor:一年多来没有更新; 看起来死了
C)Selenium(原始):很多人似乎直接使用Selenium,但它似乎是一个抽象层可以使它更容易使用
那么,对于Python来说,有没有人知道类似Capybara的东西,或者更好的类似Cucumber的东西(它不必实际使用Selenium,但它需要支持所有主流浏览器)?
*编辑*
对于那些不熟悉Capybara的人来说,它基本上只是添加了一个API,因此您可以执行以下操作来代替正常的Selenium API:
When /I sign in/ do
within("#session") do
fill_in 'Login', :with => 'user@example.com'
fill_in 'Password', :with => 'password'
end
click_link 'Sign in'
end
Run Code Online (Sandbox Code Playgroud)
它被Cucumber使用,让你进一步抽象(几乎到英文):
Scenario Outline: Add two numbers
Given I have entered <input_1> into the calculator
And I have entered <input_2> into the calculator
When I press <button>
Then the result should be <output> on the screen
Examples:
| input_1 | input_2 | button | output | …Run Code Online (Sandbox Code Playgroud) 我想创建一个Excel文件并写入数据就像用Java编写文本文件一样.我试图将文件扩展名更改.txt为.xls.但我想在Excel文件中加粗字母.我怎样才能做到这一点?
我尝试过使用JXL API,但每次创建标签时都要添加标签.不能编辑表的行和列吗?
我尝试使用以下代码:
ArrayList<String>
Map<String, String>
Run Code Online (Sandbox Code Playgroud)
Eclipse抱怨它们两者:语法错误,参数化类型仅在源级别为1.5时才会出现.
我使用JDK 1.6,但即使我去编译器并将合规性切换到1.5.它仍然给我这个错误.任何想法为什么?
DeslenCapabilities在Selenium WebDriver中的用途是什么?
什么时候想用这个怎么样?
回答示例将不胜感激.
我在谷歌和SO网站上搜索过,我得到了JAVA的答案,但似乎没有得到node.js的答案
我有一个需要时间加载的网络应用程序.我会selenium程序等到页面加载然后执行一些操作.
我目前的代码如下
//dependencies
var webdriver = require('selenium-webdriver'),
util = require('util'),
_ = require('underscore');
var driver = new webdriver.Builder().withCapabilities(webdriver.Capabilities.chrome()).build();
var branchName = _.isUndefined(process.argv[3]) ? 'branch' : process.argv[3],
hostName = _.isUndefined(process.argv[2]) ? 'localhost' : process.argv[2],
appTmpl = 'http://%s/%s',
username = 'xxxx',
password = 'xxxx';
var appUrl = util.format(appTmpl, hostName, branchName);
driver.get(appUrl);
driver.findElement(webdriver.By.name("username")).sendKeys(username);
driver.findElement(webdriver.By.name("password")).sendKeys(password);
driver.findElement(webdriver.By.name("login_button")).click();
driver.quit();
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
C:\Work\study\selenium\node_modules\selenium-webdriver\lib\webdriver\promise.js:1643
throw error;
^
NoSuchElementError: no such element
(Session info: chrome=37.0.2062.103)
(Driver info: chromedriver=2.10.267521,platform=Windows NT 6.1 SP1 x86_64)
at new bot.Error (C:\Work\study\selenium\node_modules\selenium-webdriver\lib\atoms\error.js:109:18)
at Object.bot.response.checkResponse (C:\Work\study\selenium\node_modules\selenium-webdriver\lib\atoms\response.js:106:9) …Run Code Online (Sandbox Code Playgroud) 我想检测是否弹出警报.目前我使用以下代码:
try {
Alert alert = webDriver.switchTo().alert();
// check if alert exists
// TODO find better way
alert.getText();
// alert handling
log().info("Alert detected: {}" + alert.getText());
alert.accept();
} catch (Exception e) {
}
Run Code Online (Sandbox Code Playgroud)
问题是,如果对网页的当前状态没有警觉,等待特定的时间量,直到达到超时,则抛出一个异常,因此性能实在是太差了.
有没有更好的方法,也许是一个警报事件处理程序,我可以用它来动态发生警报?
我设法让我的代码将大多数罗马数字转换为适当的十进制值.但它不适用于某些特殊情况.示例:XCIX= 99但我的代码打印出来109.
这是我的代码.
public static int romanConvert(String roman)
{
int decimal = 0;
String romanNumeral = roman.toUpperCase();
for(int x = 0;x<romanNumeral.length();x++)
{
char convertToDecimal = roman.charAt(x);
switch (convertToDecimal)
{
case 'M':
decimal += 1000;
break;
case 'D':
decimal += 500;
break;
case 'C':
decimal += 100;
break;
case 'L':
decimal += 50;
break;
case 'X':
decimal += 10;
break;
case 'V':
decimal += 5;
break;
case 'I':
decimal += 1;
break;
}
}
if (romanNumeral.contains("IV")) …Run Code Online (Sandbox Code Playgroud)