标签: arquillian-drone

刷新WebElement在单击事件中删除了哪个类

我上课有一个要点a。因此,在硒代码中,我得到了这个:

WebElement element = driver.findElement(By.cssSelector(".a"));
Run Code Online (Sandbox Code Playgroud)

之后,我用单击它element.click();。click事件a从元素中删除该类-正是我要执行的测试用例。

所以,现在我想问元素是否已经拥有这个类:

element.getAttribute("class").contains("a");
Run Code Online (Sandbox Code Playgroud)

但这是行不通的,因为WebElement尝试通过给定的选择器再次查找该元素,这对我来说并不明确。我认为,一旦找到WebElement,它就会在整个作用域内部复制。但是很明显,每次在代码中被调用时,它都会调用链接的选择器。

因此,如何才能更持久地检索元素?如何避免WebElement每次调用时都刷新以跟踪已选择元素的更改?

当然,我可以使用使用DOM,父级或列表ID的变通办法。但是我真的想避免这种情况,因为我不想在测试代码中获得太多有关DOM结构的信息。这就是我添加类和ID的原因。


编辑:添加日志输出:

WebElement element = driver.findElement(By.cssSelector(".a"));

1564042692783   webdriver::server   DEBUG   -> POST /session/2d7cce7d-bd10-4814-b619-b4c8dc212fac/elements {"value":".a","using":"css selector"}
1564042692787   Marionette  TRACE   0 -> [0,10,"WebDriver:FindElements",{"using":"css selector","value":".a"}]
1564042692793   Marionette  TRACE   0 <- [1,10,null,[{"element-6066-11e4-a52e-4f735466cecf":"517f4e9c-5d09-4fe0-8c34-4d8c153a9c4a","ELEMENT":"517f4e9c-5d09-4fe0-8c34-4d8c153a9c4a"}]]
1564042692794   webdriver::server   DEBUG   <- 200 OK {"value":[{"element-6066-11e4-a52e-4f735466cecf":"517f4e9c-5d09-4fe0-8c34-4d8c153a9c4a"}]}
Run Code Online (Sandbox Code Playgroud)

如您所见,收到的元素是517f4e9c-5d09-4fe0-8c34-4d8c153a9c4a

element.click();

1564042703055   webdriver::server   DEBUG   -> POST /session/2d7cce7d-bd10-4814-b619-b4c8dc212fac/elements {"value":".a","using":"css selector"}
1564042703058   Marionette  TRACE   0 -> [0,11,"WebDriver:FindElements",{"using":"css selector","value":".a"}]
1564042703065   Marionette  TRACE   0 <- [1,11,null,[{"element-6066-11e4-a52e-4f735466cecf":"517f4e9c-5d09-4fe0-8c34-4d8c153a9c4a","ELEMENT":"517f4e9c-5d09-4fe0-8c34-4d8c153a9c4a"}]] …
Run Code Online (Sandbox Code Playgroud)

java selenium arquillian-drone

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

Chromedriver设置单一接受语言

我正在使用带有java的ChromeDriver和arquillian无人机框架来测试我们网页的本地化.要测试浏览器中设置的不受支持的语言环境的行为,我们通过命令行参数设置chromes语言环境:

--lang=it
Run Code Online (Sandbox Code Playgroud)

ACCEPT-LANGUAGE但是,生成的-header看起来像这样:

it-IT,it;q=0.8,en-US;q=0.6,en;q=0.4
Run Code Online (Sandbox Code Playgroud)

有没有办法让chromeDriver不能自动允许en_usen

java selenium selenium-chromedriver arquillian-drone

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

如何告诉Graphene加载我的@Page?

TL; DR:我如何告诉Graphene为@ Page注入的对象加载哪个(相对)URL?


我正在尝试使用"最先进的"设置我的网络前端集成测试,即Arquillian,Arquillian Drone,Selenium 2和Graphene 2的组合.

使用Arquillian,Drone和普通Selenium WebDriver(即没有任何Graphene特定的东西),测试可以如下所示:

import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.container.test.api.RunAsClient;
import org.jboss.arquillian.drone.api.annotation.Drone;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.arquillian.test.api.ArquillianResource;

import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.jboss.shrinkwrap.resolver.api.maven.Maven;

import org.junit.Assert;
import org.junit.Test;

import org.junit.runner.RunWith;

import org.openqa.selenium.WebDriver;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@RunWith(Arquillian.class)
public class LoginIT {
    private static final Logger LOG = LoggerFactory.getLogger(LoginIT.class);

    @Deployment
    public static WebArchive createDeployment() {

        return Maven.resolver().loadPomFromFile("pom.xml")
                    .resolve("de.zalando:purchasing-frontend-general:war:?")
                    .withoutTransitivity().asSingle(WebArchive.class);
    }

    @Drone
    WebDriver driver;

    @ArquillianResource
    URL deploymentUrl;

    @Test
    @RunAsClient
    public void testLoginPage() {
        LOG.info("executing test!");

        driver.get(deploymentUrl + "");

        final String title = …
Run Code Online (Sandbox Code Playgroud)

java jboss-arquillian selenium-webdriver graphene2 arquillian-drone

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

缺少Jacoco代码覆盖率和IncompatibleClassChangeError

我有一个带有一些Arquillian测试的maven项目(包括无人机/石墨烯测试).

当我使用maven构建我的项目时,所有使用Graphene和Drone或Warp的Arquillian测试将失败并出现以下异常

Running de.mmo.arq.model.diverses.stammdaten.geldinstitut.GeldinstitutBlzTest
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 4.862 sec <<< FAILURE! - in de.mmo.arq.model.diverses.stammdaten.geldinstitut.GeldinstitutBlzTest
de.mmo.arq.model.diverses.stammdaten.geldinstitut.GeldinstitutBlzTest  Time elapsed: 4.862 sec  <<< ERROR!
org.jboss.shrinkwrap.api.exporter.ArchiveExportException: Failed to write asset to output: /WEB-INF/classes/de/mmo/base/dao/CrudService.class
Caused by: java.lang.IncompatibleClassChangeError: class org.jacoco.core.internal.flow.ClassProbesVisitor has interface org.objectweb.asm.ClassVisitor as super class
Run Code Online (Sandbox Code Playgroud)

这是魔法应该发生的地方

<build>
    <finalName>browser</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.2</version>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.5.3</version>
            <configuration>
                <tagBase>...</tagBase>
                <useReleaseProfile>false</useReleaseProfile>
            </configuration>
        </plugin>
    </plugins>
</build>
<profiles>
    <profile>
        <id>jacoco</id>
        <dependencies>
            <dependency>
                <groupId>org.jacoco</groupId>
                <artifactId>org.jacoco.core</artifactId>
                <scope>test</scope> …
Run Code Online (Sandbox Code Playgroud)

java maven jboss-arquillian arquillian-drone jacoco-maven-plugin

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