小编And*_*ver的帖子

在selenium 3.14.0中不推荐使用org.openqa.selenium.remote.internal.ApacheHttpClient - 应该使用什么?

我目前正在使用selenium 3.14.0库,其中不推荐使用org.openqa.selenium.remote.internal.ApacheHttpClient而没有其他信息.有谁知道应该使用哪个?该类已在下一版本3.141.59中删除.

我正在使用EdgeDriver Service,如下所示:

final int connectionTimeout = 2 * 60 * 1000;
final int socketTimeout = 10 * 60 * 1000; // 10 minute timeout
final ApacheHttpClient.Factory clientFactory = new ApacheHttpClient.Factory(
    new HttpClientFactory(connectionTimeout, socketTimeout));

...

edgeDriverService = new EdgeDriverService.Builder()
                        .usingDriverExecutable(edgeDriver)
                        .usingAnyFreePort()
                        .build();
edgeDriverService.start();
HttpCommandExecutor executor = new HttpCommandExecutor(
    new HashMap<>(), edgeDriverService.getUrl(), clientFactory);
WebDriver driver = new RemoteWebDriver(executor, new EdgeOptions());
Run Code Online (Sandbox Code Playgroud)

java selenium webdriver selenium-webdriver okhttp

8
推荐指数
1
解决办法
1170
查看次数

Gradle:java.io.IOException:管道正在关闭

在我的 CI 机器(Windows 10)上,我运行 Gradle 测试。基本上在机器上,在测试任务之前执行 git pull 和 java 编译。


这个任务...

测试 --tests my.package.SomeTestClass

因此异常而失败...

00:00:32,989 INFO  - Successfully started process 'Gradle Test Executor 1'
00:00:35,925 INFO  - Error occurred during initialization of VM
00:00:35,927 INFO  - Unable to allocate 16384KB bitmaps for parallel garbage collection for the requested 524288KB heap.
00:00:35,927 ERROR - Error: Could not create the Java Virtual Machine.
00:00:35,929 ERROR - Error: A fatal exception has occurred. Program will exit.
00:00:35,930 INFO  - 
00:00:35,930 ERROR …
Run Code Online (Sandbox Code Playgroud)

java gradle

6
推荐指数
0
解决办法
4095
查看次数

不同的Java库中的类重复会导致编译错误

我在使用appium java客户端时遇到了麻烦,因为似乎他们的项目做得很奇怪。

基本上,他们在项目中使用硒,这应该可以正常工作,但他们将硒中的一个软件包部分复制到了他们的项目中(org.openqa.selenium)中,并对内部的类进行了一些小的改动。基本上,他们向接口添加了泛型。现在,我们在不同库中的同一包中有重复的类,这当然会导致问题。

我创建了一个简单的Gradle项目来演示这一点。按照我的build.gradle

plugins {
    id 'java-library'
}

dependencies {
    api 'io.appium:java-client:6.1.0'
}

repositories {
    jcenter()
}
Run Code Online (Sandbox Code Playgroud)

还有我的课程Interactions.java

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;

public class Interactions {

    public static void touchWebElement(By by, WebDriver driver) {
        touchWebElement(driver.findElement(by), driver);
    }

    public static void touchWebElement(WebElement element, WebDriver driver) {
        // DO SOMETHING
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我编译该项目,则会出现以下错误:

The method touchWebElement(By, WebDriver) is ambiguous for the type Interactions    Interactions.java   line 8
Run Code Online (Sandbox Code Playgroud)

我认为这是模棱两可的,因为接口WebElement存在两次。

我该如何解决这个问题?

  • 使用appium-client <= 4.0.0是可以的,但是我需要更新的版本。 …

java generics selenium compiler-errors appium

5
推荐指数
1
解决办法
456
查看次数

升级到 Gradle 5.1.1 后,未找到给定包含的测试

我们曾经有一些命令,如下所示:

gradlew test --tests *MyTest
Run Code Online (Sandbox Code Playgroud)

例如 MyTest 类在包中com.test.MyTest。当使用低于 5.0 的 Gradle 版本时,这工作得很好,但在升级到 5.1.1 后,我收到以下错误:

未找到给定的测试包括:[*MyTest](--tests filter)

我们已经替换了所有此类事件,因为我认为使用类的完整路径要好得多。但我想知道为什么这不再起作用了。

顺便说一句:我正在使用 TestNG,并且提到的类至少有一个用@Test.

testng gradle

4
推荐指数
2
解决办法
1万
查看次数

RESTAssured 禁用 URL 编码无法正常工作

我正在使用如下 URL 测试 HTTP Post 请求:

https://myurl.com/api/logs/%2Fvar%2Flog%2Fmessages?Api-Token=12332429nmdsafs

我禁用了 URL 编码,这里是我的发布请求:

RestAssured.given()
.contentType(JSON)
.log()
.all()
.urlEncodingEnabled(false)
.baseUri(RestAssured.baseURI)
.basePath(url)
.pathParam(LOG_PATH_PARAM_NAME, urlEncodeString(requireNonNull(logPath)))
.body(myJsonBody)
.when()
.post("/logs/{logPath}")
.then()
.statusCode(OK.getStatusCode());
Run Code Online (Sandbox Code Playgroud)

我也这样尝试过:

RestAssured.given()
.contentType(JSON)
.log()
.all()
.urlEncodingEnabled(false)
.baseUri(RestAssured.baseURI)
.basePath(url)
.body(myJsonBody)
.when()
.post("/logs/" + urlEncodeString(requireNonNull(logPath)))
.then()
.statusCode(OK.getStatusCode());
Run Code Online (Sandbox Code Playgroud)

这里是 urlEncodeString 方法:

private static String urlEncodeString(String value) throws UnsupportedEncodingException {
        return URLEncoder.encode(value, StandardCharsets.UTF_8.name()).replaceAll("\\+", "%20");
    }
Run Code Online (Sandbox Code Playgroud)

现在的问题是我上面提到的 URL 被编码为以下内容:

https://myurl.com/api/logs/var/log/messages?Api-Token=12332429nmdsafs

有谁知道这里出了什么问题吗?或者知道解决方法吗?我已经尝试过双重逃脱了。

编辑:

我刚刚发现禁用 URL 编码仅适用于 URL 参数。

java url url-encoding rest-assured

4
推荐指数
1
解决办法
8934
查看次数