我在运行 Selenium 测试时遇到了一个问题。SO答案之一建议使用禁用Chrome自动化扩展useAutomationExtension-
options.setExperimentalOption("useAutomationExtension", false);
Run Code Online (Sandbox Code Playgroud)
我想了解到底useAutomationExtension是什么。因此,我将能够弄清楚它会对测试产生什么影响,并决定是否禁用。
selenium chromium google-chrome-extension selenium-chromedriver selenium-webdriver
我正在通过ExpectedCondtions类的方法,找到一个方法:刷新
我可以理解,当你获得StaleElementReferenceException并且你想要再次检索那个元素时,可以使用该方法,这样可以避免StaleElementReferenceException
我的上述理解可能不正确因此我想证实:
refreshed应该使用?something以下代码的部分代码应该是什么:wait.until(ExpectedConditions.refreshed(**something**));
有人可以用一个例子解释一下吗?
我打开irb并输入:
require 'test/unit'
Run Code Online (Sandbox Code Playgroud)
但是当我使用这个assert_equal方法时,我得到了以下错误:NoMethodError: undefined method 'assert_equal' for main:Object.为什么即使在要求'测试/单位'之后也会发生这种情况?
目前,我正在研究'external_pub'分支.我在一个文件中做了一些更改,添加了它,提交然后尝试推送:
git push origin external_pub
Run Code Online (Sandbox Code Playgroud)
但这导致了一个错误:
remote: error: hook declined to update refs/heads/external_pub
To ssh://XXX/testing.git
! [remote rejected] external_pub -> external_pub (hook declined)
error: failed to push some refs to 'ssh://XXX/testing.git'
Run Code Online (Sandbox Code Playgroud)
然后我尝试推送分支而不做任何改变,看看会发生什么(仅用于隔离问题).我做了以下事情:
git reset --hard <commit_id> (to reset to last working sha commit)
git status
Run Code Online (Sandbox Code Playgroud)
以上命令显示:
# On branch external_pub
# Your branch is ahead of 'development' by 5 commits.
#
nothing to commit (working directory clean)
Run Code Online (Sandbox Code Playgroud)
然后
git pull origin external_pub
Run Code Online (Sandbox Code Playgroud)
它显示:您的分支已经是最新的
然后
git push origin external_pub
Run Code Online (Sandbox Code Playgroud)
这次也显示出与上述相同的错误.你能帮我解决这个问题吗?
我正在测试REST API,当我进行GET调用以检索资源时,它导致500内部服务器错误,并且在输出中它返回具有媒体类型的消息application/json:
[
{
"messageType": "Some error type",
"messageText": "Some message text",
"moreInfo": "Some info"
}
]
Run Code Online (Sandbox Code Playgroud)
请注意,在上面的输出中,Json在里面 []
我想messageText从上面的输出响应中读取值.我尝试过 -
JsonObject jsonObject = response.readEntity(JsonObject.class);
Run Code Online (Sandbox Code Playgroud)
但它会导致以下错误:
java.lang.IllegalStateException: Entity input stream has already been closed.
at org.glassfish.jersey.message.internal.EntityInputStream.ensureNotClosed(EntityInputStream.java:225)
at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:830)
at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:783)
at org.glassfish.jersey.client.ClientResponse.readEntity(ClientResponse.java:326)
at org.glassfish.jersey.client.InboundJaxrsResponse$1.call(InboundJaxrsResponse.java:111)
at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
at org.glassfish.jersey.internal.Errors.process(Errors.java:228)
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:399)
at org.glassfish.jersey.client.InboundJaxrsResponse.readEntity(InboundJaxrsResponse.java:108)
Run Code Online (Sandbox Code Playgroud)
你能帮我解决一下我如何阅读输出中的信息?我正在使用Jersy库.
出于某种原因,我要为Firefox禁用javascript(手动,我们通过以下步骤提到http://support.mozilla.org/en-US/kb/javascript-settings-for-interactive-web-pages#w_enabling - 并禁用-javascript).如何通过Selenium WebDriver使用Ruby实现这一目标?
这是我的源代码:
<div class="emph a-center addCard"
Or
<a class="add-link" href="javascript:;" onclick="gotoPaymentAddressForm()">Add a New Credit Card</a
</div>
Run Code Online (Sandbox Code Playgroud)
我需要点击同一页面上打开表格的"添加新信用卡".无法使用Selenium执行此操作.
好心劝告.
我已经创建了Maven项目,在pom.xml中,我提到了以下POI依赖项,以便读取和写入excel文件:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
在测试中,当我添加时import org.apache.poi.hssf.usermodel.HSSFWorkbook;,我没有看到任何错误.
但是,当我添加时import org.apache.poi.xssf.usermodel.XSSFWorkbook;,它显示一个错误:The import org.apache.poi.xssf can not be resolved
它为XSSF抛出了错误,但对HSSF却没有.你能指导我如何解决这个问题吗?
通常,我必须打两个命令:
$ mkdir dir_name
$ cd dir_name
Run Code Online (Sandbox Code Playgroud)
创建目录并转到它。
通过使用上面可以实现的单个命令?
使用 Ruby,我们可以通过执行以下操作来等待特定元素:
wait = Selenium::WebDriver::Wait.new(:timeout => 10)
wait.until { driver.find_element(:class, 'gritter-item') }
Run Code Online (Sandbox Code Playgroud)
但是如果我希望特定元素从 DOM 中消失,我会编写如下方法:
def disappear_element
begin
driver.find_element(:class, 'gritter-item')
rescue Selenium::WebDriver::Error::NoSuchElementError
true
else
false
end
end
Run Code Online (Sandbox Code Playgroud)
并称之为:
wait.until { disappear_element }
Run Code Online (Sandbox Code Playgroud)
这样我就可以实现元素的缺失。在 Ruby 中有没有更好的方法来实现相同的目标?