请用酱实验室代码提出这个硒脚本有啥问题

Posted

技术标签:

【中文标题】请用酱实验室代码提出这个硒脚本有啥问题【英文标题】:Please Suggest what is wrong with this selenium Script with sauce lab Code请用酱实验室代码提出这个硒脚本有什么问题 【发布时间】:2019-03-14 22:24:14 【问题描述】:

配置失败:@BeforeClass createDriver org.openqa.selenium.WebDriverException:无法解析远程响应:配置错误——Sauce Labs 身份验证错误。 您使用用户名“null”和访问密钥“null”进行身份验证,这不是有效的 Sauce Labs 凭据。 收到了以下所需的功能: 'browserName': 'Chrome', “构建”:“Selenium_Soucelabs_2”, 'name': '在 Windows 10 上测试', “通过”:“真实”, '平台': 'WIN10', '版本':'66.0'

在这里我无法使用此配置运行我的脚本请帮助我这里测试有什么问题我使用酱实验室,在此代码中未提及的脚本中进行测试,我从这里遵循脚本:" https://github.com/saucelabs-sample-test-frameworks/Java-TestNG-Selenium/blob/master/src/test/java/com/yourcompany/Tests/TestBase.java"

package Checkout;

import org.testng.asserts.SoftAssert;
import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.URL;
import java.rmi.UnexpectedException;
import java.util.concurrent.TimeUnit;
import org.testng.ITestResult;
import org.testng.annotations.*;
import org.openqa.selenium.*;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.support.ui.WebDriverWait;


public class TestBaseFR 
	Object verificationErrors;
	private ThreadLocal<WebDriver> webDriver = new ThreadLocal<WebDriver>();
	private ThreadLocal<String> sessionId = new ThreadLocal<String>();
	SoftAssert softAssert=new  SoftAssert();  
	
	
	public static final String BUILDTAG = System.getenv("BUILD_TAG");

		// enter your saucelabs user name here
public static final String USERNAME = System.getenv("SAUCE_USERNAME");
// enter your access key here
public static final String ACCESS_KEY = System.getenv("SAUCE_ACCESS_KEY");
	public static final String SauceLabURL = "http://" + USERNAME + ":" + ACCESS_KEY
			+ "@ondemand.saucelabs.com:80/wd/hub";
	
	/**
     * DataProvider that explicitly sets the browser combinations to be used.
     *
     * @param testMethod
     * @return Two dimensional array of objects with browser, version, and platform information
     */
    @DataProvider(name = "hardCodedBrowsers", parallel = true)
    public static Object[][] sauceBrowserDataProvider(Method testMethod) 
        return new Object[][]
                new Object[]"MicrosoftEdge", "14.14393", "Windows 10",
                new Object[]"firefox", "49.0", "Windows 10",
                new Object[]"internet explorer", "11.0", "Windows 7",
                new Object[]"safari", "10.0", "OS X 10.11",
                new Object[]"chrome", "54.0", "OS X 10.10",
                new Object[]"firefox", "latest-1", "Windows 7",
        ;
    

	public WebDriver driver;
	/**
     * @return the @link WebDriver for the current thread
     */
    public WebDriver getWebDriver() 
        return webDriver.get();
    
	 /**
    *
    * @return the Sauce Job id for the current thread
    */
   public String getSessionId() 
       return sessionId.get();
   

	/**
	 * @throws java.lang.Exception
	 */

	protected void CreateDriver(String browser, String version, String os, String methodName)
            throws MalformedURLException, UnexpectedException 
		DesiredCapabilities caps = new DesiredCapabilities();
		caps.setCapability(CapabilityType.BROWSER_NAME, browser);
		caps.setCapability(CapabilityType.VERSION,version);
		caps.setCapability(CapabilityType.PLATFORM_NAME,os);
		caps.setCapability("name",methodName);
		 driver = new RemoteWebDriver(new URL(SauceLabURL), caps);
        if (BUILDTAG != null) 
        	caps.setCapability("build", BUILDTAG);
        

        // Launch remote browser and set it as the current thread
        webDriver.set(new RemoteWebDriver(
                new URL("https://" + USERNAME + ":" + ACCESS_KEY + "@ondemand.saucelabs.com:80/wd/hub"),
                caps));

        // set current sessionId
        String id = ((RemoteWebDriver) getWebDriver()).getSessionId().toString();
        sessionId.set(id);
    

		
  

	// Test Results
	@AfterMethod(alwaysRun = true)
	public void tearDown(ITestResult result) throws Exception 
		
		 
		        ((javascriptExecutor) webDriver.get()).executeScript("sauce:job-result=" + (result.isSuccess() ? "passed" : "failed"));
		        webDriver.get().quit();
		    

		    protected void annotate(String text) 
		        ((JavascriptExecutor) webDriver.get()).executeScript("sauce:context=" + text);
		    
	


	

【问题讨论】:

您有任何错误信息吗? 添加了错误请检查@MateMrše 【参考方案1】:

看来你需要设置saucelab环境变量。

    单击任务栏上的开始。 对于搜索程序和字段,输入环境变量。 单击编辑环境变量。 这将打开“系统属性”对话框。 单击环境变量。 这将打开“环境变量”对话框。 在系统变量部分,单击新建。 这将打开“新建系统变量”对话框。 对于变量名称,输入 SAUCE_USERNAME。 对于变量值,输入您的 Sauce 用户名。 点击确定。 重复 4 - 8 以设置 SAUCE_ACCESS_KEY。

https://wiki.saucelabs.com/display/DOCS/Best+Practice%3A+Use+Environment+Variables+for+Authentication+Credentials

【讨论】:

以上是关于请用酱实验室代码提出这个硒脚本有啥问题的主要内容,如果未能解决你的问题,请参考以下文章

个人作业4——alpha阶段个人总结

实验任务3

spark 实验

一些类似的硒等待有啥区别?

Mono生命周期小实验

字符串首尾空格去除问题