DevOps 应用集

分类: Selenium

远程调用 selenium server过程

Posted on 12 3 月, 2019 by admin

Server 端:
需要提前安装 firefox 和 selenium jar 还有 gecko packages.

1) 启动 selenium server, e.g.

java -jar selenium-server-standalone-3.141.5.jar -role hub

2) 启动 geckodriver with firefox browser, e.g.

 java -Dwebdriver.gecko.driver=/path/to/geckodriver -Dwebdriver.firefox.bin=/path/to/firefox-bin -jar /path/to/selenium-server-standalone-3.141.5.jar -role node -port 6666 -hub http://serverIP:4444/grid/register -browser browserName=firefox

至此, selenium server 开始接收远程test case调用.

Remote 端:

我们用java code连接, 如下:

//support firefox
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
		
//set firefox path on server 	
String firefoxBinPath="/path/to/firefox-bin";
capabilities.setCapability("firefox_binary",firefoxBinPath);

seleniumHost="ServerIP";
seleniumPort=6666;
//connect remote
WebDriver remoteSelenium = new RemoteWebDriver(
new URL("http://" + seleniumHost + ":" + String.valueOf(seleniumPort) + "/wd/hub"), capabilities);

在运行远端test case之前,需要启动server firefox的伺服,请查看 firefox 启动

Posted in Java, SeleniumLeave a Comment on 远程调用 selenium server过程

Selenium1和Selenium3不同的启动方式

Posted on 19 12 月, 201819 12 月, 2018 by admin

对于启动 selenium1 命令如下形式:

java -jar selenium-server.jar -port portnumber

例如

java -jar selenium-server.jar -port 4444

对于启动selenium3,命令如下

# Run selenium server and default node register port is 4444
# for exmple

java -jar selenium-server-standalone-3.141.5.jar -role hub

# 如果需要运行高版本的浏览器如FF且并发运行, 需要运行gecko driver node
# 注意:有时 selenium jar包和 gecko driver 程序需要匹配,保持两个高版本一致性

java -Dwebdriver.gecko.driver=/pathto/geckodriver -jar selenium-server-standalone-3.141.5.jar -role node -port 6666 -hub http://localhost:4444/grid/register 

#然后可以运行csv file 在运行csv时需要 testng 和自己的xml定义文件和java code,在用 java 命令调用. 如下CustomReporter 意思是定义自己的日志输出 e.g.

java -cp .;selenium-server-standalone-3.9.1.jar;commons-csv-1.1.jar;testng-6.14.2.jar org.testng.TestNG -listener CustomReporter own.xml

#xml 内容如下作为参考

 

<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE suite SYSTEM “http://testng.org/testng-1.0.dtd” >
<suite name=”Test-class Suite” parallel=”tests” >
<listeners>
<listener class-name=”CustomReporter”></listener>
</listeners>
<parameter name=”csvfilepath” value=”/csvpath” />
<parameter name=”browser” value=”FF” />
<test name=”Test-class any test name”>
<classes>
<class name=”your parsing command java class name” />
</classes>
</test>
</suite>

注意:此时我们可以以parallel模式运行csvpath目录下所有csv文件

Posted in Java, SeleniumLeave a Comment on Selenium1和Selenium3不同的启动方式

从selenium v1到Selenium v3命令迁移的java实现

Posted on 11 12 月, 201811 12 月, 2018 by admin

Selenium v1 一般使用 java 包 com.thoughtworks.selenium 调用或处理 csv file, 运行Selenium类,

而Selenium v3 一般使用 java 包 org.seleniumhq.selenium, 运行WebDriver类并支持 Remote Selenium 调用

以后的文章将会进一步距离说明两者在启动上的差异.

两者版本的不同对浏览器支持也会差异很大,例如Firefox版本

此篇文章的测试selenium v1 在 FFv3低版本, 而selenium v2 在FFv63版本

这里比较两个不同selenium版本典型命令的处理差异,对于迁移命令和解析供参考

#Open

Sele1:

     Selenium.open(url);

Sele3:

     Webdriver.get(url);

 

#TYPE

Sele1:

     Selenium.type(element,value);

Sele3:

     WebElement.sendKeys(value);

#CLICK

Sele1:

     Selenium.click(element);

Sele3:

     WebElement.click();

#WAIT

Sele1:

     Selenium.waitForPageToLoad(timeout);

Sele3:

long timeout=...;

try {

      Thread.sleep(timeout);

}catch(InterruptedException e){

      e.printStackTrace();

}

#CLICKAT

Sele1:

     Selenium.clickAt(element,posString);

Sele3:

     WebDriver driver...;

     Actions builder = new Actions(driver);

     builder.moveToElement(element, 0, 0).click().build().perform();

#SELECT

Sele1:

     Selenium.select(element,value);

Sele3:

     WebElement.click();

 

#KEYPRESS

Sele1:

     Selenium.keyPress(element,value);

Sele3:

     WebDriver driver..;.

     Actions action = new Actions(driver);

     action.sendKeys(value);

#ASSERTTEXTPRESENT

Sele2:

     Selenium.isTextPresent(element);

Sele3:

     WebDriver.getPageSource().contains(elementtext);

 

 
还有很多命令仍然需要对比解析,例如selectAndwait,check,typefilename,AssertElementPresent…
可以结合上面的命令解析和使用,其他命令如 WindowFocus,OpenWindow etc, 我们可以调用JavascriptExecutor 实现 或者 用 Actions类解决更多问题.

Posted in Java, SeleniumLeave a Comment on 从selenium v1到Selenium v3命令迁移的java实现

近期文章

  • Oracle表中字段为timestamp值转化为date显示的sql语句
  • 解决idea环境代码保存后不能实时编译的问题
  • 自定义XStream fields序列化顺序
  • Oracle 修改blob为clob,clob为blob
  • Apple Script: 备份Mac Notes到PDFs

近期评论

    归档

    • 2021 年 2 月
    • 2020 年 8 月
    • 2020 年 7 月
    • 2020 年 1 月
    • 2019 年 11 月
    • 2019 年 5 月
    • 2019 年 3 月
    • 2019 年 2 月
    • 2018 年 12 月

    分类

    • Apple Script
    • docker
    • Git
    • gRPC
    • Hana
    • Idea
    • Java
    • Jenkins
    • Linux
    • Maven
    • Mockito
    • Oracle
    • Selenium
    • Sona
    • SpringBoot
    • Tomcat
    • Uncategorized
    • VirtualBox
    • VMWare
    • VPN
    • XML

    其他操作

    • 登录
    • 条目 feed
    • 评论 feed
    • WordPress.org

    bidvertiser

    Powered by DoHints.cn