Python にエクスポートされたさまざまな Selenium WebDrivers を実行する Python スクリプトがあります。スクリプトと Web ドライバーは、私がやりたいことを実行します。スクリプトが Web ドライバーを実行すると、Web ドライバーは必要な処理を実行し、スクリプトに戻ってスクリプトを続行しますが、一時停止し、Firefox が再びポップアップして、同じ Web ドライバー タスクを再度実行します。これは、Web ドライバーまたはスクリプトから得られる結果には影響しませんが、実行時間が大幅に増加します。
webdriver の最初の実行後、シェルは以下を返します。
Ran 1 test in 192.680s OK
ただし、予期せず webdriver を繰り返すと、ピリオド "." しか返されません。
これがwebdriverのコードです。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
import unittest, time, re
class WebdriverViewas(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(30)
self.base_url = #website I'm interested in visiting
self.verificationErrors = []
self.accept_next_alert = True
def test_webdriver_viewas(self):
#Here I just tell the webdriver what to do, I doubt this is causing the problem
def is_element_present(self, how, what):
try: self.driver.find_element(by=how, value=what)
except NoSuchElementException, e: return False
return True
def is_alert_present(self):
try: self.driver.switch_to_alert()
except NoAlertPresentException, e: return False
return True
def close_alert_and_get_its_text(self):
try:
alert = self.driver.switch_to_alert()
alert_text = alert.text
if self.accept_next_alert:
alert.accept()
else:
alert.dismiss()
return alert_text
finally: self.accept_next_alert = True
def tearDown(self):
self.driver.quit()
self.assertEqual([], self.verificationErrors)
if __name__=='__main__':
try:
unittest.main()
except SystemExit as inst:
if inst.args[0] is True: # raised by sys.exit(True) when tests failed
raise
この問題は unittest モジュールで解決できると思いましたが、私が行った調査では何も見つかりませんでしたし、同様の問題を抱えている人を見つけることもできませんでした。