我上课有一个要点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的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_us和en?
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
我有一个带有一些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