Python Selenium не удается запустить в конвейере Azure

#python-3.x #selenium-webdriver #azure-pipelines

Вопрос:

может быть, кто-нибудь может мне здесь помочь, потому что я совершенно схожу с ума и, честно говоря, понятия не имею, что я делаю не так.

Короче говоря, у меня есть код селена на python, первый шаг для этого селена-открыть веб-страницу входа в систему и ввести имя пользователя и пароль для входа.

Поскольку имя пользователя и пароль являются закрытыми, я использовал argparse их для того, чтобы вводить эти значения из командной строки в конвейер.

Сценарий selenium выглядит следующим образом:

 parser = argparse.ArgumentParser()
parser.add_argument("--USERNAMEOT", type=str)
parser.add_argument("--PASSWORDOT", type=str)
option = parser.parse_args()
USERNAMEOT = option.USERNAMEOT
PASSWORDOT = option.PASSWORDOT


wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div[class$='visible-lg'] input#signInFormUsername"))).send_keys(USERNAMEOT)
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div[class$='visible-lg'] input#signInFormPassword"))).send_keys(PASSWORDOT)
 

на моем локальном компьютере, если я подойду к терминалу и запущу код:

 python script.py --USERNAMEOT username --PASSWORDOT password
 

Селен запускается, открывает страницу и вводит имя пользователя и пароль. Красиво, пока все так, как и ожидалось.

Теперь я хотел реализовать тот же логин в azure pipeline, чтобы я мог автоматизировать этот процесс без необходимости каждый раз делать это вручную.

поэтому я начинаю настраивать конвейер следующим образом

 trigger: none

variables:
  vmImageName: 'ubuntu-latest'

stages:
  - stage:
    jobs:
      - job: Test1
        steps:
          - task: UsePythonVersion@0
            inputs:
              versionSpec: '3.x'
              addToPath: true
          - script: |
              python -m pip install --upgrade pip
              pip install selenium
              printenv
          - task: Pythonscript@0
            inputs:
              scriptSource: 'filePath'
              scriptPath: './script.py'
              arguments: --USERNAMEOT $(USERNAMEOT) --PASSWORDOT $(PASSWORDOT)

      - job: Test2
        dependsOn: Test1
        steps:
          - task: UsePythonVersion@0
            inputs:
              versionSpec: '3.x'
              addToPath: true
          - script: |
              python -m pip install --upgrade pip
              pip install selenium
          - task: Pythonscript@0
            inputs:
              scriptSource: 'filePath'
              scriptPath: './script1.py'
 

I set the arguments in the selenium jobs, and configured those values in azure pipeline variables tab.

When the pipeline triggers, thanks to the printing I can see the env variable set correctly.

In the job itself, it shows that the arguments has been passed correctly

 /opt/hostedtoolcache/Python/3.9.5/x64/bin/python /home/vsts/work/1/s/script.py --USERNAMEOT username --PASSWORDOT 'password'

 

But after 30secs the code fails with the following error:

 Traceback (most recent call last):
  File "/home/vsts/work/1/s/script.py", line 47, in <module>
    wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div[class$='visible-lg'] input#signInFormUsername"))).send_keys(USERNAMEOT)
  File "/opt/hostedtoolcache/Python/3.9.5/x64/lib/python3.9/site-packages/selenium/webdriver/support/wait.py", line 80, in until
    raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: 
 

Это происходит потому, что он не может найти имя пользователя, я полагаю, но локально у меня точно такая же конфигурация, и она работает просто отлично. Могу, пожалуйста, кого-нибудь пролить свет на этот вопрос, потому что я понятия не имею, где больше искать.