簡體   English   中英

將Appium作為python子進程運行的危險?

[英]Dangers of running Appium as a python subprocess?

我正在使用Appium進行UI測試,並在其上使用Robot Framework。 我正在嘗試自動化測試iOS應用程序(包括Appium服務器)所需的所有服務器和服務。 這似乎在Appium內部造成了一些損壞。 特別是,在調用driver.get_elements_by_accessibility_id(id)時,我們似乎陷入了困境。

子流程啟動看起來像這樣:

self.app = subprocess.Popen("appium", shell=True, stdout=PIPE, stderr=PIPE)

當我們丟棄stdout / stderr kwarg或使其指向文件時,該行為將恢復正常。 是否存在對stdout / stderr的某種依賴而導致這種情況?

除非您從管道中讀取,否則請不要使用PIPE ,例如,使用out, err = self.app.communicate() 否則,子進程可能會掛起,這就是subprocess.call() docs warn發出警告的原因

請勿將此功能與stdout=PIPEstderr=PIPE一起使用。 如果子進程向管道生成足夠的輸出以填充OS管道緩沖區,則該子進程將阻塞,因為未從中讀取管道。

subprocess.call()不會消耗管道,因此您不應將PIPE傳遞給它。 要放棄輸出,可以改用DEVNULL 如果以后不使用self.app.stdout/stderr Popen()也一樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM