技术求助:Selenium代码无法在LambdaTest平台运行
解决LambdaTest上Selenium测试的Legacy Capabilities报错问题
问题原因
- 代码中使用的
platform和name属于旧版(Legacy)Capabilities,Selenium 4+已弃用,必须改用W3C标准配置格式 - 未按LambdaTest要求嵌套自定义能力,导致会话创建失败,所有测试被跳过
修复步骤
- 替换
platform为W3C标准的platformName
W3C规范中平台名称需使用标准值:Windows、macOS、Linux(注意大小写) - 将测试名称
name放入LambdaTest专属配置lt:options
LambdaTest的自定义能力(如测试名称、构建标识等)必须嵌套在lt:options对象中,不能直接作为顶级Capability
修改后的完整代码
package lambdatest; import org.openqa.selenium.*; import org.openqa.selenium.remote.*; import org.testng.Assert; import org.testng.annotations.*; import java.net.URL; public class Lambdatest { private WebDriver driver; @BeforeClass @Parameters({"browserName", "browserVersion", "platform"}) public void setUp(String browserName, String browserVersion, String platform) throws Exception { // 基础W3C能力配置 MutableCapabilities capabilities = new MutableCapabilities(); capabilities.setCapability("browserName", browserName); capabilities.setCapability("browserVersion", browserVersion); // 替换为W3C标准的platformName capabilities.setCapability("platformName", platform); // LambdaTest自定义能力,嵌套在lt:options中 MutableCapabilities ltOptions = new MutableCapabilities(); ltOptions.setCapability("name", "LambdaTest Assignment"); // 可添加更多LambdaTest自定义能力,比如构建信息 // ltOptions.setCapability("build", "Selenium-W3C-Build-1"); capabilities.setCapability("lt:options", ltOptions); String username = "**************"; String accessKey = "*************************************"; driver = new RemoteWebDriver(new URL("https://" + username + ":" + accessKey + "@hub.lambdatest.com/wd/hub"), capabilities); } @AfterClass public void tearDown() { if (driver != null) { driver.quit(); } } @Test(priority = 1) public void testScenario1() { driver.get("https://www.lambdatest.com/selenium-playground/"); String pageTitle = driver.getTitle(); Assert.assertEquals(pageTitle, "LambdaTest"); // Expecting failure } }
额外注意事项
- 确保使用Selenium 4.x及以上版本,W3C Capabilities是该版本的默认标准
- 检查TestNG参数中的
platform值是否与W3C规范一致(如Windows而非windows) - 所有LambdaTest专属的配置项(如
build、project、video等)都需放入lt:options对象内
内容的提问来源于stack exchange,提问作者Ezhumalai Shanmugam
相关产品推荐
相关产品推荐

