es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Pasar objeto de opciones con kwargs de opción en BrowserStack.

Estoy tratando de hacer algo muy fácil con BrowserStack usando selenium y python 3. Digamos que esta es mi capacidad:

caps =
[
  {
    'os_version': '10',
    'os': 'Windows',
    'browser': 'chrome',
    'browser_version': '96.0',
    'name': 'Parallel Test1',  # nombre de la prueba
    'build': 'browserstack-build-1'  # Sus pruebas se organizarán dentro de esta compilación
  }
]

Ahora, supongamos que lo único que quiero hacer es visitar Google. Aquí está el código:

driver = webdriver.Remote(command_executor='https://myBrowserStackCode', desired_capabilities=caps[1])
driver.get("https://www.google.com")
driver.quit()

Funciona, pero desired_capabilities se ha quedado obsoleto y me piden que “pase un objeto Options con el argumento de opciones”. No sé qué significa eso. ¿Debería ir con algo como esto?

opciones = webdriver.ChromeOptions()

¿Cómo se supone que debo pasar caps entonces? ¿Qué pasa si tuviera más de una capacidad en caps, cada una con diferentes navegadores?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para abordar la obsolescencia de desired_capabilities, puedes crear un objeto Options y pasarlo como argumento de palabra clave al instanciar el controlador. Aquí tienes un ejemplo:

    options = webdriver.ChromeOptions()
    caps = {
        'os_version': '10',
        'os': 'Windows',
        'browser': 'chrome',
        'browser_version': '96.0',
        'name': 'Prueba paralela 1',  # nombre de la prueba
        'build': 'browserstack-build-1',  # Tus pruebas se organizarán dentro de esta compilación
    }
    
    for key, value in caps.items():
        options.set_capability(key, value)
    
    driver = webdriver.Remote(
        command_executor='https://miCodigoBrowserStack',
        options=options
    )
    driver.get('https://www.google.com')
    driver.quit()
    

    En este fragmento de código, primero creamos un objeto ChromeOptions y luego recorremos cada par clave-valor en caps. Para cada par, utilizamos el método set_capability de nuestro objeto ChromeOptions para establecer la capacidad con la clave y el valor correspondientes.

    Este método se puede adaptar fácilmente para admitir múltiples capacidades. Solo necesitarías definir una lista de diccionarios, donde cada diccionario corresponde a una capacidad independiente. A continuación, iterarías sobre esta lista y crearías un nuevo objeto ChromeOptions para cada capacidad. Aquí tienes un ejemplo:

    capabilities = [
        {
            'os_version': '10',
            'os': 'Windows',
            'browser': 'chrome',
            'browser_version': '96.0',
            'name': 'Prueba paralela 1',
            'build': 'browserstack-build-1'
        },
        {
            'os_version': '11',
            'os': 'Windows',
            'browser': 'firefox',
            'browser_version': '97.0',
            'name': 'Prueba paralela 2',
            'build': 'browserstack-build-2'
        }
    ]
    
    for caps in capabilities:
        options = webdriver.ChromeOptions()
        for key, value in caps.items():
            options.set_capability(key, value)
        driver = webdriver.Remote(
            command_executor='https://miCodigoBrowserStack',
            options=options
        )
        driver.get('https://www.google.com')
        driver.quit()
    

    En este fragmento de código, definimos una lista de dos capacidades, cada una representada como un diccionario. Luego iteramos sobre esta lista y, para cada capacidad, creamos un nuevo objeto ChromeOptions y establecemos sus capacidades. Luego creamos una nueva instancia de controlador remoto utilizando el argumento de palabra clave options, visitamos Google y luego cerramos el controlador.

Comments are closed.