15

Firefox ドライバーを使用し、Windows 内でブラウザーをヘッドレスで実行するように Selenium を構成することは可能ですか?

Windows または Linux で動作する他のドライバーを認識していますが、上記の特定のケースでは動作しません。参照情報 (それを達成するためのアドホックな方法、制限など) を読んでいただければ幸いです。

よろしく、

4

2 に答える 2

10

OS Windows でサポートされている専用の仮想デスクトップを介してブラウザ (Firefox、IE など) を実行することができます。そのようなタスクの既知のヘルパー ユーティリティの 1 つにHeadless Selenium for Windows があります。

于 2015-10-28T09:23:34.550 に答える
2

Here is the way we are running selenium using firefox driver in headless mode on windows.

Create a windows task schedule, you can either do this using the UI http://windows.microsoft.com/en-US/windows/schedule-task#1TC=windows-7

or with a command like this :

schtasks /Create /TN Automation /TR C:\automation\automated_regression.bat /SC ONSTART /RU Administrator /RP password /F /V1

in our case, the automation is ant driven, so the automated_regression.bat has something like this

:myLoop
cd c:\automation
call ant_env.bat
call ant -f regression.xml
GOTO myLoop

where the regression.xml has a the typical junit targets of a selenium java project

    <property name="main.dir" location="./selweb" />
    <property name="src.dir" location="${main.dir}/src" />
    <property name="lib.dir" location="${main.dir}/lib" />
    <property name="build.dir" location="${main.dir}/build" />
    <property name="test.report" location="${main.dir}/testreport">
    </property>
    
    <path id="build.classpath">
        <fileset dir="${lib.dir}">
            <include name="**/*.jar" />
        </fileset>
    </path>
    
    <target name="clean">
        <delete dir="${build.dir}" />
        <delete dir="${test.report}" />
    </target>
    
    <target name="make dir" depends="clean">
        <mkdir dir="${build.dir}" />
        <mkdir dir="${test.report}" />
    </target>
    
    <target name="compile" depends="clean, make dir">
        <javac srcdir="${src.dir}" destdir="${build.dir}" debug="true">
            <classpath refid="build.classpath" />
        </javac>
    </target>
    
    <target name="junit" depends="clean, make dir,compile">
        <loadfile property="LATEST" srcFile="LATEST" />
        <junit printsummary="no" fork="true" haltonfailure="false" dir="${main.dir}">
            <classpath>
                <pathelement path="${build.dir}" />
                <fileset dir="${lib.dir}">
                    <include name="**/*.jar" />
                </fileset>
            </classpath>
            <formatter type="xml" />
            <batchtest todir="${test.report}">
                <fileset dir="${build.dir}">
                    <include name="**/tests/**/*.class" />
                </fileset>
            </batchtest>
        </junit>
        
        <junitreport todir="${test.report}">
            <fileset dir="${test.report}">
                <include name="**/*.xml"/>
            </fileset>
            <report format="noframes" todir="${test.report}/html" styledir="${main.dir}/style"> 
            <param name="TITLE" expression="Selenium Test Results for build ${LATEST}"/>
            </report>
            <report format="frames" todir="${test.report}/html" styledir="${main.dir}/style"/>
        </junitreport>      
    </target>

you can use a logger to record your ant runtime eg.

<record name="log\automation_${timestamp}.log" loglevel="verbose" append="false" />

using this you can follow what is going on in your headless automation.

The ' characters around the executable and arguments are
not part of the command.
    [junit] Test com.yourtests ... FAILED
    [junit] Implicitly adding C:\automation\dep\apache-ant-1.8.4\lib\ant-launcher.jar;C:\automation\dep\apache-ant-1.8.4\lib\ant.jar;C:\automation\dep\apache-ant-1.8.4\lib\ant-junit.jar;C:\automation\dep\apache-ant-1.8.4\lib\ant-junit4.jar to CLASSPATH
.....    
'org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner'
'com.yourtests'
'filtertrace=true'
'haltOnError=false'
'haltOnFailure=false'
'showoutput=false'
'outputtoformatters=true'
'logfailedtests=true'
'logtestlistenerevents=false'
'formatter=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,c:\automation\selweb\testreport\TEST-com.yourtests'
'crashfile=c:\automation\junitvmwatcher2114698975676150832.properties'
'propsfile=c:\automation\junit4190343520192991051.properties'

We have followed this approach and it's working, even screen shots are being taken and inserted in the ant-junit html report.

So the essence is that you need to run your selenium through windows Tasks Scheduler and it will run in headless mode. I think something similar can be done under linux using the cron, but i haven't tried it out to see if it works.

于 2014-10-22T22:38:34.773 に答える