子进程未使用pytest运行Sikuli

问题描述 投票:0回答:1

我尝试在Pytest中启动Sikuli测试。我的目标是通过单击“确定”来处理PKCS12 Chrome警报。

为此,我运行一个子进程,以Sikuli测试作为参数,调用Sikuli JAR。子进程调用在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()
subprocess pytest sikuli
1个回答
0
投票

我找到了解决方案。

get命令正在等待HTTP响应。因此,子进程永远不会运行。

为此,您需要使用multiprocessing

解决方案代码:

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()
© www.soinside.com 2019 - 2024. All rights reserved.