我试图将浏览器(chrome)日志消息(React logs,js errors等)保存到 robot framework 测试运行的文件中。显然这比应该更难,因为我无法在机器人框架中找到方便的API来实现这一点。
我发现chrome可以用--enable-logging --v=1
标志启动,以将日志消息定向到文件中。但是我如何通过机器人框架中的Open Browser
关键字传递此标志?更确切地说,我实际上是使用robotframework-maven-plugin
在远程服务器上使用无头浏览器运行测试。
这是当前通过执行远程shell任务从jenkins在远程服务器上启动测试的方法
rm -rf tests
git clone git@*****/tests.git && cd tests
Xvfb :99 -ac -screen 0 1280x1024x24 &
export DISPLAY=:99
mvn -DforceOpenJpaExecution=true -Dbrowser=chrome -Dserver=***** -DchromeDriverPath=/usr/local/bin/chromedriver clean verify
以下是测试项目的pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>*****</groupId>
<artifactId>tests</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<name>tests</name>
<dependencies>
<dependency>
<groupId>com.github.markusbernhardt</groupId>
<artifactId>robotframework-selenium2library-java</artifactId>
<version>1.4.0.8</version>
</dependency>
</dependencies>
<build>
<defaultGoal>verify</defaultGoal>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0-alpha-2</version>
<executions>
<execution>
<id>setPropertyChromeDriver</id>
<phase>integration-test</phase>
<goals>
<goal>set-system-properties</goal>
</goals>
<configuration>
<properties>
<property>
<name>webdriver.chrome.driver</name>
<value>${chromeDriverPath}</value>
</property>
</properties>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.robotframework</groupId>
<artifactId>robotframework-maven-plugin</artifactId>
<version>${robotframework-maven-plugin.version}</version>
<executions>
<execution>
<id>robotTest</id>
<phase>integration-test</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
以下是resource.robot
Open the web application
Open Browser %{server}/App %{browser}
Maximize Browser Window
Wait Until Page Contains Login
现在,我如何将--enable-logging --v=1
传递给chrome驱动程序,还是有更方便的方法来将浏览器日志记录到文件或测试结果?
我找到了这段代码来设置标志,但我不知道如何在我的案例中将其应用于基于关键字的资源
from selenium import webdriver
options = webdriver.ChromeOptions()
# set some options
# for example:
# options.add_argument('--disable-logging')
driver = webdriver.Remote(desired_capabilities=options.to_capabilities())
答案 0 :(得分:1)
如果您需要使用Selenium2Library将选项传递给webdriver,则应使用关键字Create Webdriver
(以及之后的Go To
网址)。
答案 1 :(得分:0)
在previous SO question中我提供了一个应该适用的答案
*** Settings ***
Library Selenium2Library
*** Test Cases ***
Log Chrome Console
${c_opts} = Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys, selenium.webdriver
Call Method ${c_opts} add_argument enable-logging
Call Method ${c_opts} add_argument v\=1
Create Webdriver Chrome crm_alias chrome_options=${c_opts}
Go To http://www.url.com
[Teardown] Close All Browsers
这会将参数添加到Chrome的命令行。