在这种情况下如何单击第一个链接:
<div class="item">
<a href="/agree/">Agree</a>
</div>
<div class="item">
<a href="/agree/">Agree</a>
</div>
Run Code Online (Sandbox Code Playgroud)
within ".item" do
first(:link, "Agree").click
end
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Capybara::Ambiguous:
Ambiguous match, found 2 elements matching css ".item"
Run Code Online (Sandbox Code Playgroud)
没有within我得到这个错误:
Failure/Error: first(:link, "Agree").click
NoMethodError:
undefined method `click' for nil:NilClass
Run Code Online (Sandbox Code Playgroud) 我正在尝试将请求标头"Referer"设置为欺骗来自其他网站的请求.我们需要使用特定引用者的能力测试,它将特定的表单返回给用户,否则给出另一种形式.
我可以通过以下方式在恶作剧中做到这一点:
page.driver.headers = {"Referer" => referer_string}
Run Code Online (Sandbox Code Playgroud)
但我找不到selemium驱动程序的等效功能.
如何在capybara selenium驱动程序中设置请求标头?
我想Capybara在我的代码中有不同的等待时间,具体取决于它们通常需要多长时间才能完全加载?我是否必须重复改变Capybara.default_wait_time或者有更好的方法吗?
我使用capybara点击一个复选框,但无论我做什么,它似乎都找不到它.我能够正确地找到跨度内的跨度和标签,但不能找到我实际需要的输入.
这是复选框
<span class="checkbox tos">
<input id="agreement" name="agreement" onclick="agreeValidate();" type="checkbox" value="false">
<label for="agreement">I accept the <a href="http://www.dev.com:3000/terms" target="_blank">Terms of Use</a>, <a href="http://www.dev.com:3000/privacy" target="_blank">Privacy Policy</a>, and am at least 13 years old</label>
</span>
Run Code Online (Sandbox Code Playgroud)
以下是我尝试过的一些事情
page.check('agreement')
find(:css, '#agreement').set(true)
find('#agreement').set(true)
find('#agreement').click
Run Code Online (Sandbox Code Playgroud)
但是,他们都给了我同样的错误
Unable to find css "#agreement" (Capybara::ElementNotFound)
Run Code Online (Sandbox Code Playgroud)
我也想知道onclick当单击复选框时,这些方法中的任何一个都会触发该方法吗?我觉得find(:css, '#agreement').set(true)不会触发onclick事件.但是,我不确定其余的事情.
更新
我也试过通过xpath选择元素.以下是我发现的各种事情
find(:xpath, '//*[@id="registration"]/span[2]')
Run Code Online (Sandbox Code Playgroud)
这样就可以找到span没有问题的元素
find(:xpath, '//*[@id="registration"]/span[2]/input')
Run Code Online (Sandbox Code Playgroud)
这找不到我需要的元素,但是这个xpath正确地选择了chrome控制台中的元素
find(:xpath, '//*[@id="agreement"]')
Run Code Online (Sandbox Code Playgroud)
这找不到我需要的元素,但xpath选择chrome控制台中的元素
find(:xpath, '//*[@id="registration"]/span[2]/label')
Run Code Online (Sandbox Code Playgroud)
这样就可以label在span没有问题的情况下找到元素.
我正在开发一款支持快速浏览器的等距游戏,<canvas>非常有趣.为了保存每个图块的信息,我使用一个二维数组,其中包含代表图块ID的数字,如:
var level = [[1, 1, 1, 2, 1, 0],
[0, 1, 1, 2, 0, 1],
[0, 1, 1, 2, 1, 1]];
var tiles = [
{name: 'grass', color: 'green'},
{name: 'water', color: 'blue'},
{name: 'forest', color: 'ForestGreen'}
];
Run Code Online (Sandbox Code Playgroud)
到目前为止,它的效果很好,但现在我想在这张照片中使用高度和斜率: alt text http://harmen.no-ip.org/isometrictiles.png
对于每个瓷砖,我需要保存它的瓷砖ID,高度和有关哪些角向上翻转的信息.
我想出了一个关于所有四个角的按位表示的简单想法,如下所示:
1011 // top, bottom and left corner turned up
Run Code Online (Sandbox Code Playgroud)
我的问题是:为每个单元格保存这三个值的最有效方法是什么?是否可以将这三个值保存为一个整数?
关于使用Maven和Eclipse创建Java Web应用程序,我有几个问题:
我是Maven的新手并使用Eclipse Juno.我已经安装了Maven Integration for Eclipse.有三个选项在文件>新建>其它> Maven的:
1.结帐Maven项目从SCM
2. Maven的模块
3. Maven项目
,但我没有看到Maven2的POM描述这里.我已经读过添加pom.xml是使用Maven时要做的第一件事.
我有一个现有的动态Web项目,所以我不确定是否需要创建Maven项目才能使用Maven.
如何在现有项目中使用Maven?
此外,当我尝试添加Maven项目并在步骤"选择一个原型"时,所有显示的原型都有版本"RELEASE".当我在此步骤中单击"下一步"时,Eclipse将变为"无响应".它的使用内存甚至没有增加.
我尝试开始使用selenium(今天下载了当前版本)并复制了他们打开浏览器并执行谷歌搜索的示例.
但是,该程序永远挂在第一行WebDriver driver = new FirefoxDriver();.
我安装了Firefox 13.
Thread dump: Thread [main] Thread.sleep(long) line: not available [native method] [local variables unavailable] FirefoxBinary.sleep(long) line: 218 FirefoxBinary.clean(FirefoxProfile, File) line: 234 NewProfileExtensionConnection.start() line: 76 FirefoxDriver.startClient() line: 200 FirefoxDriver(RemoteWebDriver).(CommandExecutor, Capabilities) line: 94 FirefoxDriver.(FirefoxBinary, FirefoxProfile) line: 147 FirefoxDriver.() line: 85 Test.main(String[]) line: 24
Capybara 2.1.0似乎没有找到任何元标记:
(rdb:1) p page.find 'meta'
*** Capybara::ElementNotFound Exception: Unable to find css "meta"
Run Code Online (Sandbox Code Playgroud)
即使他们出现在page.source:
(rdb:1) p page.source
"<!doctype html>\n<html>\n<head>\n<title>MyTitle</title>\n<meta charset='utf-8'>\n<meta content='IE=edge,chrome=1' http-equiv='X-UA-Compatible'>\n<meta content='width=device-width, initial-scale=1' name='viewport'>\n<meta name='description'>\n\n..."
Run Code Online (Sandbox Code Playgroud)