gpt4 book ai didi

具有许多 phantomjs 并发实例的 Selenium 网格节点

转载 作者:行者123 更新时间:2023-12-03 06:22:42 25 4
gpt4 key购买 nike

我正在努力添加一个具有许多并发 PhantomJS 实例的节点。在 GhostDriver github 页面上,您可以找到仅使用一个 PhantomJS 实例注册一个节点的说明:

phantomjs --webdriver=8080 --webdriver-selenium-grid-hub=http://127.0.0.1:4444

我不允许发布图像,因此这是使用以下方法添加节点后的 GridView : enter image description here

这是配置选项卡内容:

port:6666
servlets:[]
host:null
cleanUpCycle:5000
browserTimeout:0
hubHost:127.0.0.1
registerCycle:5000
hub:http://127.0.0.1:4444/grid/register/
capabilityMatcher:org.openqa.grid.internal.utils.DefaultCapabilityMatcher
newSessionWaitTimeout:-1
url:http://127.0.0.1:6666
remoteHost:http://127.0.0.1:6666
prioritizer:null
register:true
throwOnCapabilityNotPresent:true
nodePolling:5000
proxy:org.openqa.grid.selenium.proxy.DefaultRemoteProxy
maxSession:1
role:wd
jettyMaxThreads:-1
hubPort:4444
timeout:300000

由于 selenium grid 允许从命令行定义节点浏览器,我尝试使用 phantomjs 来定义节点浏览器,但正如你所看到的 here不支持。

Parameters allowed for -browser: browserName={android, chrome, firefox, htmlunit, internet explorer, iphone, opera} version={browser version} firefox_binary={path to executable binary} chrome_binary={path to executable binary} maxInstances={maximum number of browsers of this type} platform={WINDOWS, LINUX, MAC}

最佳答案

正在努力解决同样的问题:我预计将实现以下架构(如下屏幕): archtecture

但是我面临以下问题:1) 如果我们使用以下参数配置 selenium-server- (在 UI 执行方式上配置,即通过 ffox、chrome 或 IE)就像

java -jar  selenium-server-standalone-2.41.0.jar -role node -hub htt
p://localhost:4444/grid/register -port 7575 -browser browserName=firefox,maxIns
tances=5,platform=WINDOWS

然后我们得到需要的结果:http://gyazo.com/6cd19155c78a59b22a09f4a3da3439b5我想请您注意,使其成为可能的主要参数是:-浏览器 browserName=firefox,maxInstances=5,platform=WINDOWS

但如果是 GhostDriver over phantomJs,我们预计不会启动 selenium-server-.jar,而是启动 phantomjs.exe 应用程序,该应用程序不支持 -browser 参数: unknown parameter unknown parameter 2

根据list of allowed phantomjs parameters我只成功启动了 1 phantom jsInstance与 5 个并发的 Firefox 实例相比。

这可能会对您有所帮助 - 现在我正在重新组织我的测试架构,并将尝试调整到以下内容:1 个节点 = 1 个 PhantomJs 实例。 reorganized test architecture

在本地主机上,可以使用不同的端口运行许多节点(IE、Ffox、Chrome): http://gyazo.com/302fab9b6722251aa2cc6d98e2522931

<小时/>

这个解决方案对我有用:

  • 关于项目结构的一些话:我有 linux 机器(192.34.61.205,selenium hub 在这里运行)和大约 20 个与其相关的 phantomJs 节点: http://gyazo.com/0a3a50f2ee1638d10b1766e300438891在所有节点上,phantomJs 作为服务运行(为了在节点上重新启动 phantomJs,只需输入命令 sudo service phantomjs restart )

某些节点具有以下 IP:162.243.175.134162.243.175.97162.243.175.252....

public class BrowserOneInstance extends BaseMethodsForMultipleBrowsers {

private WebDriver driver;

private final static Logger log = LoggerFactory.getLogger(BrowserOneInstance.class);
public static LoginPage loginPage;
public static FacebookUserPage homePage;

FileOperations fileManipulator = new FileOperations();


//staring hub - nodes model (on local WIN machine) over GhostDriver- pHantomJS

@BeforeClass
public void seleniumGrridUponGhostDriver() throws MalformedURLException {


// File phantomjs = Phanbedder.unpack(); //Phanbedder to the rescue!

File phantomjs = new File(System.getProperty("java.io.tmpdir")+File.separator+"phantomjs-1.9.7");


DesiredCapabilities dcaps = new DesiredCapabilities();
dcaps.setCapability("takesScreenshot", true);


dcaps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, phantomjs.getAbsolutePath());

// !!!!! hardCoded initizliations of GhostDriver node
// driver = new RemoteWebDriver(new URL("http://localhost:8080"), dcaps);

// driver initialization using method providing IP of running Ghost node connected to running hub
// this.driver= new RemoteWebDriver(new URL("http://"+getGhostNodesIp()+":8080"),dcaps);

// node connected to linux hub:
this.driver = new RemoteWebDriver(new URL("http://162.243.175.134:8080"), dcaps);


driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);

//page instances init()
loginPage = PageFactory.initElements(driver, LoginPage.class);
homePage = PageFactory.initElements(driver, FacebookUserPage.class);
}

@Test
public void abracadabraTestMethod(){

....
}


@AfterTest
public void driverTearDown() {
// close any of the instances: either Firefox or GhostDriver
driver.quit();
}

}

注意:

如果你想让 phantomJs 以跨平台的方式工作,消除手动替换您可以使用 Phanbedder - PhantomJS Windows/Mac OS X/Linux native binary embedder :

import net.anthavio.phanbedder.Phanbedder;

......

@BeforeClass
public void seleniumGrridUponGhostDriver() throws MalformedURLException {

File phantomjs = Phanbedder.unpack(); //Phanbedder to the rescue!


DesiredCapabilities dcaps = new DesiredCapabilities();
dcaps.setCapability("takesScreenshot", true);


dcaps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, phantomjs.getAbsolutePath());


this.driver = new RemoteWebDriver(new URL("http://162.243.175.134:8080"), dcaps);

......

希望这对您有用。

关于具有许多 phantomjs 并发实例的 Selenium 网格节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23295196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com