Подпроцесс не запускает Sikuli с pytest - PullRequest
0 голосов
/ 30 октября 2019

Я пытаюсь запустить тест Sikuli в Pytest. Моя цель - обработать оповещение PKCS12 Chrome, нажав «ОК».

Для этого я запускаю подпроцесс, вызывающий JAR Sikuli, в качестве аргумента которого используется тест Sikuli.
Вызов подпроцесса действителен сPython 3.8, так как он нормально работает в режиме ожидания Python.
Но в процессе pytest нет никакой подсказки, что подпроцесс что-то делает, и тест завершается с исключением времени ожидания.

Любая идея о том, кто яотсутствует?

Мой контекст:

  • Windows 7
  • Python 3.8
  • Pytest 5.2.2
  • Sikuli 2.0.0 (работает с OpenJDK 9)

Мой код:

import subprocess
from selenium import webdriver
import time

def test_webaccess():
    options=webdriver.ChromeOptions()
    options.add_argument('--allow-running-insecure-content')
    options.add_argument('--ignore-certificate-errors')
    driver = webdriver.Chrome(options=options)
    driver.get("https://<my_website_url>/")
    time.sleep(10)
    subprocess.run('java -jar %SIKULI%/sikulix-2.0.0.jar -r <path_to_sikuli_test>/click_ok.py', shell=True, capture_output=True)
    assert "<webiste_title>" in driver.title
    assert "No results found." not in driver.page_source
    driver.close()

1 Ответ

0 голосов
/ 30 октября 2019

Я нашел решение.

Команда get ожидает ответа HTTP.
Итак, подпроцесс никогда не запускается.

Для этого вам нужно использовать многопроцессорная .

Код решения:

import subprocess
from selenium import webdriver
from multiprocessing import Process

def clik_ok():
    subprocess.run('java -jar %SIKULI%/sikulix-2.0.0.jar -r <path_to_sikuli_test>/click_ok.py', shell=True, capture_output=True)

def test_sdc_webaccess():
    options=webdriver.ChromeOptions()
    options.add_argument('--allow-running-insecure-content')
    options.add_argument('--ignore-certificate-errors')
    driver = webdriver.Chrome(options=options)
    p=Process(target=clik_ok)
    p.start()
    driver.get("<my_website_url>")
    p.join()
    assert "<webiste_title>" in driver.title
    assert "No results found." not in driver.page_source
    driver.close()
...