高度な Web 自動テスト: Web ページにおける Expected_conditions の適用と原則

序文

Expected_conditions は Web ページ上の要素を判定できる Selenium のモジュールで、一般的に WebDriverWait とともに使用されます。

詳しい紹介

1. title_is、現在のページのタイトルが期待値と等しいかどうかを判断し、ブール値を返します。

driver.title を使用して、現在のページのタイトルを印刷することもできます。

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.set_window_size(480, 600)
driver.get('https://www.baidu.com')

# 判断当前页面的标题是否符合预期
# title = WebDriverWait(driver, 5).until(EC.title_is('百度一下,你就知道'))
# 返回的类型是True或False
# print(title)
if EC.title_is('百度一下,你就知道'):
    print(True)
print(driver.title)
driver.quit()

2. title_contains()、現在のページのタイトルに予期される文字列が含まれているかどうかを判断します。

使用法は title_is() と似ているため、説明は省略します。

3. present_of_element_located() は、要素が DOM ツリーに追加されるかどうかを決定しますが、要素が表示されなければならないという意味ではありません

注: 渡されるパラメータはタプル タイプで、最初の要素は位置決めメソッド、2 番目の要素は値です。要素が存在する場合は要素の位置を返し、存在しない場合は例外 (NoSuchElementException) をスローします。

from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.set_window_size(480, 600)
driver.get('https://www.baidu.com')

r = EC.presence_of_element_located(('id', 'kw'))
print(r(driver))

4.visibility_of_element_located() は、要素が表示されるかどうかを決定します (表示されるとは、要素が非表示ではなく、要素の幅と高さが 0 に等しくないことを意味します)。

present_of_element_located() 型と比較した場合の違いは、presents_of_element_located() は要素が DOM ツリーに存在することのみを強調し、要素が表示されているかどうかは関係ないことです。
要素が存在して表示されている場合は要素自体を返し、要素が存在しているが表示されていない場合は false を返します。

5. Visibility_of() は要素が表示されるかどうかを決定します

関数はvisibility_of_element_located()と同じですが、パラメータが異なり、visibility_of()で受け取るパラメータは位置決めされた要素です。

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.set_window_size(480, 600)
driver.get('https://www.baidu.com')

element = driver.find_element_by_id('kw')
locate = WebDriverWait(driver, 5).until(EC.visibility_of(element))
locate.send_keys('selenium')
driver.quit()

6、全要素の存在()

DOM ツリーに少なくとも 1 つの要素が存在するかどうかを確認します。

7、要素内に存在するテキスト()

要素内のテキストに予期した文字列が含まれているかどうかを判断します

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.set_window_size(480, 600)
driver.get('https://www.baidu.com')

r = WebDriverWait(driver, 5).until(EC.text_to_be_present_in_element(('xpath', '//*[@id="bottom_layer"]/div[1]/p[5]/a'), '使用百度前必读'))
print(r)

8、要素の値に存在するテキスト()

要素の value 属性に予期される文字列が含まれているかどうかを判断します。

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.set_window_size(480, 600)
driver.get('https://www.baidu.com')

# 判断某个元素的value属性值是否符合预期字符串
r = WebDriverWait(driver, 5).until(EC.text_to_be_present_in_element_value(('id', 'su'), '百度一下'))
print(r)

9、利用可能なフレームとスイッチへのフレーム()

フォームを切り替えられるかどうかを判断します。はいの場合は True を返して切り替えます。それ以外の場合は False を返します。
たとえば、QQ メールボックスにログインします。

from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait

def find_element(located):
    if isinstance(located, tuple):
        return WebDriverWait(driver, 5).until(EC.presence_of_element_located(located))
    else:
        return '必须是元组类型'

driver = webdriver.Chrome()
driver.set_window_size(600, 800)

driver.get('https://mail.qq.com/')
# 判断iframe是否可以切换进去,返回布尔值
is_switch = WebDriverWait(driver, 5).until(EC.frame_to_be_available_and_switch_to_it(('id', 'login_frame')))
print(is_switch)

# 点击【帐号密码登录】
WebDriverWait(driver, 5).until(EC.presence_of_element_located(('id', 'switcher_plogin'))).click()

# 定位元素:账号输入框、密码输入框、登录按钮
user_element = find_element(('id', 'u'))
password_element = find_element(('id', 'p'))
login_element = find_element(('id', 'login_button'))

# 输入账号、密码、点击登录
user_element.send_keys('[email protected]')
password_element.send_keys('password')
login_element.click()

driver.quit()

10、要素の位置の非表示()

要素が DOM ツリーに存在しないか、表示されていないかを判断します。

from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.set_window_size(480, 600)
driver.get('https://www.baidu.com')

a = EC.invisibility_of_element_located(('id', 'kw')) # 存在则返回False
print(a(driver))

11、クリック可能要素()

要素が表示され、クリック可能かどうかを判断します。
要素が存在し、クリック可能である場合は要素を返します。要素が存在してもクリック可能でない場合は、False を返します。

from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.set_window_size(480, 600)
driver.get('https://www.baidu.com')

# 百度页该元素不可点击,返回False
a = EC.element_to_be_clickable(('xpath', '//*[@id="s-bottom-layer-right"]/span[2]'))
print(a(driver))

12、staleness_of()

要素が DOM ツリーから削除されるまで待機し、その要素を渡してページが更新されたかどうかを判断します。

13、選択される要素()

要素が選択されているかどうかを判断します。通常はドロップダウン リストで使用され、要素要素を渡します。

14、element_selection_state_to_be()

要素の選択状態が期待どおりかどうかを判断します。メソッドのパラメータは element と is_selected です。

15、element_located_selection_state_to_be()

element_selection_state_to_be() と同じ機能を持ちますが、メソッドのパラメータが異なり、メソッドのパラメータが配置され、is_selected

16、alert_is_present()

ページにアラート警告があるかどうかを押します

最後に:熱心なファンに恩返しするために、完全なソフトウェア テスト ビデオ学習チュートリアルを作成しました。必要な場合は、無料で入手できます。【保证100%免费】

ソフトウェアテストの面接ドキュメント

私たちは高給の仕事を見つけるために勉強しなければなりません。次の面接の質問は、アリ、テンセント、バイトなどの一流インターネット企業からの最新の面接資料であり、一部のバイトの上司が権威ある回答をしています。このセットを完了してください。面接資料は次のとおりです。誰もが満足のいく仕事を見つけることができると信じています。

おすすめ

転載: blog.csdn.net/IT_LanTian/article/details/131537807