Как передать указанный браузер c в качестве аргумента. Ошибка: py.test: error: нераспознанные аргументы: --browser IE - PullRequest
0 голосов
/ 15 января 2020

Я новичок в Sellinium / Python и выполняю несколько упражнений. Я хочу запустить эту программу с помощью Inte rnet Explorer, поэтому в командной строке я дал следующую команду:

py.test -s -v mainTest.py --browser IE

Когда я запускаю вышеуказанную команду, она показывает ошибку как:

ОШИБКА: использование: py.test [параметры] [file_or_dir] [file_or_dir] [...] py.test: ошибка: нераспознанные аргументы: --browser IE inifile: None`` rootdir: C: \ Users \ Radha.Maravajhala \ PycharmProjects \ RadhaSelenium \ Tests

Не идентифицируется аргумент --browser.

Как я могу запустить мою программу с указанным браузером c в качестве аргумента в команде py.test. Пожалуйста, помогите.

Мой код:

mainTest.py

import os
import pytest
import unittest
from executionEngine.DriverScript import driverScript
from Utilities.Constants import Constants
from selenium import webdriver

class mainTest(driverScript):

def main(self):
    print("Main Test started...")
    print("Selenium webdriver Version: %s" % (webdriver.__version__))
    driver = driverScript('IE')
    driver.getbrowserInstance()

m = mainTest()
m.main()

DriverScript.py

import os
import pytest
import unittest

from pip._internal.configuration import Configuration
from selenium import webdriver
from selenium.webdriver import Ie
from selenium.webdriver import DesiredCapabilities
from selenium.webdriver.ie.options import Options
from selenium.webdriver.common.keys import Keys
#import selenium.webdriver
from Utilities import Constants

class driverScript():

def __init__(self,browser=None):

     if browser is None:
         browser = {}
     else:
         self.browser = browser
         print(self.browser)

     self.constants = Constants.Constants()

# Method to invoke browser
def getbrowserInstance(self):
    # create a new IE session
    print("Browser invoke started")

    if (self.browser=='IE'):

       capabilities = DesiredCapabilities.INTERNETEXPLORER
       print(capabilities["platform"])
       print(capabilities["browserName"])

       driver_location = self.constants.path_ie_driver

       os.environ["webdriver.ie.driver"] = driver_location

       ie_options = Options()
       ie_options.ignore_protected_mode_settings = True

       driver = webdriver.Ie(driver_location, options=ie_options)

       print("Browser is Invoked")
       driver.get("http://www.amazon.co.uk")
       driver.quit()

    elif (self.browser=='Chrome'):

       capabilities = DesiredCapabilities.CHROME
       print(capabilities["platform"])
       print(capabilities["browserName"])

       driver_location = self.constants.path_chrome_driver

       os.environ["webdriver.chrome.driver"] = driver_location

       driver = webdriver.Chrome(driver_location)

       print("Chrome Browser is Invoked")
       driver.get("http://www.amazon.co.uk")
       driver.quit()

Constants.py:

 class Constants():

 #Driver Locations
 path_ie_driver = "C:\\Selenium\\Drivers\\IEDriverServer.exe"
 path_chrome_driver = "C:\\Selenium\\Drivers\\chromedriver.exe"

confest.py

class Constants():

import pytest
from executionEngine.DriverScript import driverScript

# Send request variable to the fixture
# Browser value will be set from request.config.getoption (from command 
#                                                           prompt)
@pytest.yield_fixture(scope="class")
 def invoke_browser(request,browser):
     wdf = driverScript.getbrowserInstance(browser)
     driver = wdf.getbrowserInstance()

# Set class attribute and assign the variable
    if request.cls is not None:
       request.cls.driver = driver
       yield driver

driver.quit()

Создание 2 анализаторов для получения значения из командной строки

def pytest_addoption(parser):
    parser.addoption("--browser")

Возвращение значения аргумента

    @pytest.fixture(scope="session")
def browser(request):
    return request.config.getoption("--browser")

1 Ответ

0 голосов
/ 17 января 2020

Похоже, у вас возникли некоторые недоразумения относительно передачи аргумента для сценария python.

Если вы хотите запустить свой сценарий с несколькими браузерами, вам нужно использовать несколько веб-драйверов в своем коде. В приведенном выше коде я вижу, что вы используете только веб-драйвер IE.

Другое дело, я не видел, где вы проверяете и используете аргумент, который вы передали из командной строки.

Я предлагаю вам использовать условие IF..elif и попытаться проверить команду Строковый аргумент в нем. На основании значения аргумента вы можете попытаться выполнить сегмент кода для любого определенного c веб-браузера.

Пример:

#!/usr/bin/python

import sys, getopt

def main(argv):
   inputfile = ''
   outputfile = ''
   try:
      opts, args = getopt.getopt(argv,"hi:o:",["ifile=","ofile="])
   except getopt.GetoptError:
      print 'test.py -i <inputfile> -o <outputfile>'
      sys.exit(2)
   for opt, arg in opts:
      if opt == '-h':
         print 'test.py -i <inputfile> -o <outputfile>'
         sys.exit()
      elif opt in ("-i", "--ifile"):
         inputfile = arg
      elif opt in ("-o", "--ofile"):
         outputfile = arg
   print 'Input file is "', inputfile
   print 'Output file is "', outputfile

if __name__ == "__main__":
   main(sys.argv[1:])

Ссылка:

Python - Аргументы командной строки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...