Selenium IDE Python Remote Controlプラグインフォーマッタでエクスポートされた複数のPythonテストスクリプトを実行することにはいくつか問題があります。Selenium IDE Pythonスクリプトをテストスイートとして実行しようとしています
1)pythonスクリプトが完了すると、ブラウザウィンドウが自動的に閉じます。私は私の例として、Firefoxでテストを実行しています。
2)SeleniumはPythonでテストスイートをエクスポートできません。 Pythonでテストスイートの機能をどのように複製できますか?
Pythonでテストスクリプトを実行するのは、私たちのテストケースソリューション(Testuff)ソフトウェアが、Seleniumテストケース自動化を実行した隣接テストケースをAPI呼び出しで更新できるためです。
ここでは、API呼び出しを使用したコードの例を示します。
ありがとうございました。迅速な対応のための
from selenium import selenium
import unittest, time, re
class python_script(unittest.TestCase):
def setUp(self):
self.verificationErrors = []
self.selenium = selenium("localhost", 4444, "*chrome", "http://test website url/")
self.selenium.start()
def test_python_script(self):
sel = self.selenium
from selenium import selenium
import unittest, time, re, urllib
class python_script(unittest.TestCase):
def setUp(self):
self.verificationErrors = []
self.selenium = selenium("localhost", 4444, "*chrome", "http://test website url/")
self.selenium.start()
def test_python_script(self):
sel = self.selenium
sel.open("http://192.168.48.23/labmatrix")
for i in range(60):
try:
if sel.is_element_present("//*[@name='username']"):
break
except: pass
#time.sleep(1)
else:
fields = {"test_id" : "testuff test_id number","status" : "failed"}
result = urllib.urlopen("testuff api url", urllib.urlencode(fields))
print result.read()
self.fail("time out")
sel.type("//*[@name='username']", "username")
for i in range(60):
try:
if sel.is_element_present("//*[@name='password']"): break
except: pass
#time.sleep(1)
else:
fields = {"test_id" : "testuff test_id number","status" : "failed"}
result = urllib.urlopen("testuff api url", urllib.urlencode(fields))
print result.read()
#self.fail("time out")
sel.type("//*[@name='password']", "password")
for i in range(60):
try:
if sel.is_element_present("//*[@id='submitButton']"): break
except: pass
#time.sleep(1)
else:
fields = {"test_id" : "testuff test_id number","status" : "failed"}
result = urllib.urlopen("testuff api url", urllib.urlencode(fields))
print result.read()
self.fail("time out")
sel.click("//*[@id='submitButton']")
#time.sleep(0.1)
for i in range(60):
try:
if sel.is_element_present("//*[@id='loadingDeck'][@selectedIndex='1']"):
fields = {"test_id" : "testuff test_id number","status" : "passed"}
result = urllib.urlopen("testuff api url", urllib.urlencode(fields))
print result.read()
break
except: pass
#time.sleep(1)
else:
self.fail("time out")
def tearDown(self):
self.selenium.stop()
self.assertEqual([], self.verificationErrors)
if __name__ == "__main__":
unittest.main()
def tearDown(self):
self.selenium.stop()
self.assertEqual([], self.verificationErrors)
if __name__ == "__main__":
unittest.main()
感謝。私はこのコードでjcfollowerの推薦を試みました:
from selenium import selenium
import unittest, time, re
class python_script(unittest.TestCase):
def setUp(self):
self.verificationErrors = []
self.selenium = selenium("localhost", 4444, "*chrome", "Testing Website URL")
self.selenium.start()
def test_python_script_1(self):
sel = self.selenium
def test_python_script_2(self):
sel = self.selenium
sel.open("Testing website URL")
for i in range(60):
try:
if sel.is_element_present("//*[@name='username']"):
break
except: pass
#time.sleep(1)
else:
fields = {"test_id" : "Testuff API Test_id","status" : "failed"}
result = urllib.urlopen("API URL", urllib.urlencode(fields))
print result.read()
self.fail("time out")
sel.type("//*[@name='username']", "username")
for i in range(60):
try:
if sel.is_element_present("//*[@name='password']"): break
except: pass
#time.sleep(1)
else:
fields = {"test_id" : "testuff API test_id","status" : "failed"}
result = urllib.urlopen("testuff API url", urllib.urlencode(fields))
print result.read()
#self.fail("time out")
sel.type("//*[@name='password']", "password")
for i in range(60):
try:
if sel.is_element_present("//*[@id='submitButton']"): break
except: pass
#time.sleep(1)
else:
fields = {"test_id" : "testuff API test_id","status" : "failed"}
result = urllib.urlopen("API URL", urllib.urlencode(fields))
print result.read()
self.fail("time out")
sel.click("//*[@id='submitButton']")
#time.sleep(0.1)
for i in range(60):
try:
if sel.is_element_present("//*[@id='loadingDeck'][@selectedIndex='1']"):
fields = {"test_id" : "testuff API test_id","status" : "passed"}
result = urllib.urlopen("API URL", urllib.urlencode(fields))
print result.read()
break
except: pass
#time.sleep(1)
else:
self.fail("time out")
def tearDown(self):
self.selenium.stop()
self.assertEqual([], self.verificationErrors)
if __name__ == "__main__":
unittest.main()
def tearDown(self):
self.selenium.stop()
self.assertEqual([], self.verificationErrors)
if __name__ == "__main__":
unittest.main()
...残念ながら、ブラウザウィンドウはまだ閉じています。その他の提案はありますか?
ありがとうございました。
部分的に動作するようにしました。
削除の1:
if __name__ == "__main__":
unittest.main()
def tearDown(self):
self.selenium.stop()
self.assertEqual([], self.verificationErrors)
...と削除:
self.selenium.stop()
残りの "if __name__
" の文と、Pythonのログに加えて、ブラウザ・ウィンドウからは開いたまま。それは正しい方向へのステップですが、スクリプトが実行された後にログウィンドウを閉じる必要があります。
次のステップを推測すると、別の停止クラスを作成し、それをselenium.pyファイルで少し遊んで、ブラウザを閉じるコマンドを削除できるかどうかを確認することです。
誰かが他の提案をいただければ、大いに感謝します。
のようなものねえヨアフにスクリプトの先頭にインポート行を変更することができ、私はあなたの提案を試してみましたが、Firefoxのウィンドウが何らかの理由で開けません。 –
正確に言うのは難しいですが、2.7より古いPythonを実行しているか、unittest2をインストールしていない/正しくインポートできませんでした。ロード時にsetUpClassが実行されるようにしてください。例えば各関数にいくつかのprintステートメントを追加し、それらが実行されるかどうかを確認します。 – gingerlime
こんにちはYoav、私はPython 2.7を使用しています。ありがとう。 –