Python 自動テスト面接の質問まとめ (1) (継続的に更新)

ここに画像の説明を挿入します

ここにディレクトリのタイトルを書きます

1. ページ要素のニーズが頻繁に変わる場合はどうしますか?

po モードを使用すると、ビジネス ロジックとテスト ロジックが分離されます。ページが頻繁に変更される場合、要素の配置式やカプセル化されたビジネス メソッドを含むページを保守するだけで済みます。テスト ロジックを変更する必要はありません。頻繁に変更する必要はありません。ページは自動テストの問題点です
。要件を変更することはできません。現在、PO モデルを使用することが最も効果的なソリューションです。

2. 自動化プロセス中に問題が発生しましたか? 例えば

a. ページが頻繁に変更されるため、スクリプトを変更する必要がある
b. スクリプトが不安定で、実行に失敗することが多い
c. 効率の向上は安定性に影響します。

3. アラートポップアップウィンドウの対処方法

まずポップアップ ウィンドウに切り替えます:alert=driver.switch_to.alert
確認:alert.accept()
キャンセル:alert.dismiss()
ポップアップ ウィンドウのテキストを取得:alert.getText()
ポップアップ ウィンドウにコンテンツを入力:alert.sendkeys()

4. Selenium で複数のウィンドウを処理するにはどうすればよいですか?

Baidu ブラウザでテストします。

a. Baiduブラウザの検索ページウィンドウを取得します。

search_window=driver.current_window_handle

b. 「hao123」ラベルをクリックして、hao123 ページにジャンプします。

driver.find_element_by_xpath('//a[text()="hao123"]').click()
time.sleep(2)

c. すべてのウィンドウ ハンドルを取得する

all_handles=driver.window_handles

d. hao123 ページに切り替えます

for handle in all_handles:
	if handle!=search_window:
		driver.switch_to.window(handle)
		driver.find_element_by_xpath('//a[text()="网易"]').click()

e. 再度検索ページに切り替えた場合

driver.switch_to.window(search_window)

5. フレーム内の要素を検索しているときに、その要素に遭遇したことがありますか? フレーム内の要素の配置をどのように処理しますか?

フレームに切り替え

def switch_frame(frame_el):
	driver.switch_to.frame(frame_el)
	el=driver.find_element_by_xpath('//input[@id="kw"]')
	el.input('kobe')
	
frame_el=driver.find_element_by_xpath('//iframe[@name="baidu"]')	
switch_frame(frame_el)

ホームページに戻る

driver.switch_to.default_content()

6. ドロップダウン メニューをどう扱うか?

a. テキストテキストで検索

def select(el):
	s=Select(el)	#初始化Select对象
	s.select_by_visible_text('kobe')
el=driver.find_element_by_xpath('//select[@id="faver"]')

b. 値による検索

def select(el):
	s=Select(el)
	s.select_by_value('double')
el=driver.find_element_by_xpath('//select[@id="faver"]')

7. ブラウザを閉じるときの quit と close の違いは何ですか?

driver.quit(): ブラウザ全体を閉じる
driver.close(): 現在のページを閉じる
quit は通常、テストを終了する前に使用され、close はユースケースの実行中に特定のページを閉じるために使用されます。

8. ファイルをアップロード(追加)するにはどうすればよいですか?

最初のメソッド: send_keys

a. ファイルをアップロードする入り口を見つける
b. エントリ要素 (file_el) の式を取得する
c. ファイルをアップロードする
file_el.send_keys(r'c:\666.doc')

2 番目の方法: pywinauto

    def upload_file(self):
        # 点击上传文件按钮
        self.browser.find_element_by_xpath('//span[contains(text(),"点击上传")]').click()
        # 使用pywinauto来选择文件
        app = pywinauto.Desktop()
        # 选择文件上传的窗口
        dlg = app['打开']
        # 选择文件地址输入框,点击
        dlg['Toolbar3'].click()
        # 键盘输入上传文件的路径
        send_keys(r'C:\Users\Lenovo')
        # 键盘输入回车键,打开该路径
        send_keys('{VK_RETURN}')
        # 选中文件名输入框,输入文件名
        dlg['文件名(&N):Edit'].type_keys('1.jpg')
        # 点击打开
        time.sleep(2)
        #dlg['打开(&O)'].click()
        dlg['打开(&O)'].double_click()
        time.sleep(2)
        return self

9. マウスホバー、キーボードイベント、ドラッグアンドドロップアクションを実装するにはどうすればよいですか?

a. マウスオーバー

1、初始化一个action_chains对象
action=ActionChains(driver)
2、找到要悬浮的元素,
setting_el=driver.find_element_by_xpath(//span[@id=“s-usersetting-top”]) -----> 设置
3、调用鼠标操作的函数,传入move_to_element()函数中
action.move_to_element(setting_el)
4、要让动作生效的话,必须加上perform
action.move_to_element(setting_el).perform()
5、再定位到高级设置标签
top_setting_el=driver.find_element_by_xpath(//a[text()=“高级搜索”])
top_setting_el.click()

b. ドラッグアクション

def drag_and_drop(el1,el2)
	action=ActionChains(driver)
	action.drag_and_drop(el1,el2)
	action.proform()
drag_and_drop(el1,el2)

c. ダブルクリックします。

def double_click(el)
	action=ActionChains(driver)
	action.double_click(el)
	action.perform()
double_click(el)

10. Selenium 自動テストでは、通常どのような種類のテストを実行しますか?

プロジェクトの安定性
回帰テストの
モニタリング

11. 自動テストでバグが誤って報告されたことがありますか? 誤検知(*)が発生した場合はどうすればよいですか?

自動テスト レポートではバグが見つかったことが示される場合がありますが、実際にはバグが存在しないことを確認するために手動テストが使用されます。
誤検知の理由は一般的に次のとおりです:
a. 要素の配置が不安定です (待ち時間がないか、待ち時間の設定が短すぎます。要素は動的に変化するため、要素式を最適化する必要があります)、b. スクリプトの安定性を確保する必要があります
。可能な限り改善する必要があります (独立したテスト環境を使用し、ユース ケースとユース ケースは互いに独立している必要があり、結合しすぎないようにしてください); c. 開発はページを更新しましたが、テストは時間内に更新および保守されませんでし
。 !
d. ネットワークの問題 (ページの読み込みが遅すぎる)

12. 自動テストプロセス中にどのような問題に遭遇しましたか?また、それらをどのように解決しましたか (*)?

効率と安定性を確保
するには大幅な変更が必要であり、コードを保守する必要があります。
誤検知が発生する理由: 質問 11

13. Selenium スクリプトの実行速度を向上させる方法

a. 強制待機を使用しない
b. 不必要な操作を最小限に抑える
c. 不必要な IO 操作を減らす
d. 他の人が環境構成を変更できないように、独立したテスト環境を使用するよう努める
e. 結合を減らすために、ユースケースとユースケースを関連付けないようにするユースケース f
. Stuck と stop の
相対
表現を使用する

14. 検証コードを含む関数のテストを自動化する方法

ユニバーサルコード
開発は終了しました

15. 自動テスト (重要) の使用シナリオは何ですか?

a. 需要は安定しており、頻繁に変化することはありません。
b. 開発とテストのサイクルは長く、回帰テストを頻繁に実行する必要があります。
c. 同じテストを複数のプラットフォームで繰り返し実行する必要があるシナリオ。
d. 一部のテスト項目は手動テストでは実装できないか、手動テストのコストが高すぎます。
e. テスト対象のソフトウェアの開発は比較的標準化されており、システムのテスト容易性を確保できます
f. オンライン監視

16. 自動テストプロセスについて説明してください (重要)?

a. 自動テスト計画の作成
b. 自動テスト ケースの設計
c. 自動テスト フレームワークの作成
d. スクリプトのデバッグ
e. テスト ケースの実行、無人テスト
f. スクリプト後のメンテナンス (テスト ケースの追加、更新バージョンの開発)

17. Web 自動化とアプリ自動化の違いは何ですか (重要)?

a. 起動の違い.
携帯電話は
同時に 1 つの APK パッケージの Web 側のみをテストできます. 複数のプロセスがあるため、コンピューターはテストのために複数のブラウザを開くことができます b.
インストールの違い.
アプリ側: かどうかを確認する必要があります
Web 側をテストする前にソフトウェアがインストールされます。 : インストールは必要ありません。ブラウザに URL を入力するだけでテストできます。
c. ページ要素の操作

d. さまざまな自動テスト フレームワーク
Selenium
appiumを使用する

18. httpとhttpsの違い(重要)

a. HTTP はハイパーテキスト転送プロトコルであり、情報は平文で送信されますが、HTTPS は安全な SSL 暗号化送信プロトコルです
b. HTTP と HTTPS はまったく異なる接続方法を使用し、使用するポートも異なります (前者は 80、後者は 443)。
c. HTTP 接続は非常にシンプルでステートレスです。HTTPSプロトコルは、SSL+HTTPプロトコルをベースにして構築された、暗号化通信と本人認証が可能なネットワークプロトコルであり、HTTPプロトコルよりも安全です。(ステートレスとは、データ パケットの送信、送受信が互いに独立していることを意味します。コネクションレスとは、どちらの通信側も相手に関する情報を長期間保持しないことを意味します。)

19. Selenium で要素の操作の成功率を確保するにはどうすればよいですか? 言い換えれば、クリックした要素をクリック可能にするにはどうすればよいでしょうか?

a. スクリプトに非表示の待機と明示的な待機を追加します。
b. 必要に応じて強制待機を使用します。
c. try メソッドを使用して、ID、名前、クラス、X パス、CSS セレクターをさまざまな方法で配置します。最初のメソッドが失敗した場合、次のことができます。自動的に 2 つ目のものを試行します。d の種類
。指定されたフレームとウィンドウ内に存在する必要があります。

20. マウス操作でよく使う機能(追加予定)

context_click() 右クリック --> このメソッドはマウスの右クリックのダブルクリック効果をシミュレートします
double_click() --> このメソッドはダブルクリックのドラッグ効果をシミュレートします ダブルクリック
drag_and_drop()--> このメソッドはダブルクリックのホバー効果をシミュレートしますクリック ドラッグ
move_to_element() --> このメソッドは
perform() マウスオーバー効果の実行をシミュレートします- --> このメソッドは上記のすべてのマウス メソッドを実行するために使用されます

ここに画像の説明を挿入します
ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/YZL40514131/article/details/125940126