硒備忘單

Selenium是用於測試Web應用程序的框架。

以下是我的硒備忘單。

我使用的是Python?,但其他語言的概念相同。

1.導入硒庫

您可以從這裡獲得硒。

from selenium import webdriver

2.啟動網路驅動程序和瀏覽器

啟動網路驅動程序和Chrome瀏覽器。

您可以從這裡獲取ChromeDriver。

chromedriver = "C:/tests/chromedriver.exe"
driver = webdriver.Chrome(executable_path = chromedriver)

啟動網路驅動程序和Firefox瀏覽器。

您可以從這裡獲取GeckoDriver。

geckodriver = "C:/tests/geckodriver.exe"
driver = webdriver.Firefox(executable_path = geckodriver)

啟動Webdriver和Internet Explorer瀏覽器。

您可以從此處獲取IEDriverServer。

iedriver = "C:/tests/IEDriverServer.exe"
driver = webdriver.Firefox(executable_path = iedriver)

啟動網路驅動程序和Safari瀏覽器。

沒有下載。 SafariDriver集成在Safari中。

driver = webdriver.Safari()

我沒有使用裝有所有這些瀏覽器的計算機,而是使用Endtest。

它是無代碼自動化測試的平台,您可以在其中使用Windows,macOS機器和移動設備上的真實瀏覽器創建,管理和執行測試。

3.打開一個網站

the_url = "https://example.com"
driver.get(the_url)

4.查找元素

讓我們嘗試找到此元素:

 href="https://dev.to/sign-up" id="register" name="register" class="cta nav-link">Sign Up

通過ID查找元素

the_id = 'register'
element = driver.find_element_by_id(the_id)

按名稱查找元素

the_name = 'register'
element = driver.find_element_by_id(the_name)

通過類名稱查找元素

the_class_name = 'nav-link'
element = driver.find_element_by_class_name(the_class_name)

通過標籤名稱查找元素

the_tag_name = 'a'
element = driver.find_element_by_tag_name(the_tag_name)

通過鏈接文字查找元素

僅適用於錨元素。

the_link_text = 'Sign Up'
element = driver.find_element_by_link_text(the_link_text)

通過部分鏈接文本查找元素

僅適用於錨元素。

the_partial_link_text = 'Sign'
element = driver.find_element_by_partial_link_text(the_partial_link_text)

通過CSS選擇器查找元素

您可以從瀏覽器中提取CSS選擇器。

或者,您可以使用元素中的屬性來編寫自己的代碼:

*(attribute="attribute_value")

對於我們的元素,自定義CSS選擇器將是:

a(href="https://dev.to/sign-up")
the_css_selector = 'a(href="https://dev.to/sign-up")'
element = driver.find_element_by_css_selector(the_css_selector)

通過XPath查找元素

您可以從瀏覽器中提取XPath。

或者,您可以使用元素中的屬性來編寫自己的代碼:

//*(@attribute = "attribute_value")

對於我們的元素,自定義XPath將是:

//a(@href = "https://dev.to/sign-up")

您可以在此處了解更多信息。

the_xpath = '//a(@href = "https://dev.to/sign-up")'
element = driver.find_element_by_xpath(the_xpath)

5.單擊一個元素

the_id = 'register'
element = driver.find_element_by_id(the_id)
element.click()

6.在元素內寫文本

僅適用於輸入和文本區域。

the_id = 'email'
the_email = 'klaus@werner.de'
element = driver.find_element_by_id(the_id)
element.send_keys(the_email)

7.選擇一個選項

僅適用於選擇元素。

 id="country">
 value="US">United States
 value="CA">Canada
 value="MX">Mexico

讓我們選擇加拿大。 ??

您可以使用可見的文本:

the_id = 'country'
element = driver.find_element_by_id(the_id)
select_element = Select(element)
select_element.select_by_visible_text('Canada')

您可以使用以下值:

the_id = 'country'
element = driver.find_element_by_id(the_id)
select_element = Select(element)
select_element.select_by_value('CA')

您還可以使用索引:

the_id = 'country'
element = driver.find_element_by_id(the_id)
select_element = Select(element)
select_element.select_by_index(1)

8.截屏

the_path = 'C:/tests/screenshots/1.png'
driver.save_screenshot(the_path)

Selenium不提供屏幕截圖比較,但我們知道誰提供。

9.上載檔案

這可以通過使用send_keys方法在輸入type =「 file」元素中寫入文件的本地路徑來實現。

讓我們使用這個例子:

 type="file" multiple="" id="upload_button">
the_file_path = 'C:/tests/files/example.pdf'
the_id = 'upload_button'
element = driver.find_element_by_id(the_id)
element.send_keys(the_file_path)

您可以在此處閱讀有關在測試中上傳文件的更多信息。

10.執行JavaScript

在某些情況下,您可能需要執行一些JavaScript代碼。

就像您在瀏覽器控制台中執行它一樣。

js_code = 'document.getElementById("pop-up").remove()'
driver = execute_script(js_code)

11.切換到iframe

 id="payment_section">
    id="card_number">
    id="card_name">
    id="expiration_date">
    id="cvv">

the_iframe_id = 'payment_section'
the_element_id = 'card_number'
the_iframe = driver.find_element_by_id(the_iframe_id)
driver.switch_to.frame(the_iframe)
element = driver.find_element_by_id(the_element_id)
element.send_keys('41111111111111')
driver.switch_to.default_content()

Endtest還支持iframe,甚至還支持Shadow DOM。

12.切換到下一個標籤

您必須將當前選項卡的句柄存儲在全局變數中。

如果只打開一個選項卡,則句柄為0。

global nextTab
global currentTab
nextTab = currentTab + 1
driver.switch_to_window(driver.window_handles(nextTab))
currentTab = currentTab + 1

13.切換到上一個標籤

global previousTab
global currentTab
previousTab = currentTab - 1
driver.switch_to_window(driver.window_handles(previousTab))
currentTab = currentTab - 1

14.關閉標籤

driver.close()

15.關閉警報

driver.switch_to.alert.accept()

16.刷新

driver.refresh()

17.懸停

the_id = "register"
the_element = driver.find_element_by_id(the_id)
hover = ActionChains(driver).move_to_element(the_element)
hover.perform()

18.右鍵單擊

the_id = "register"
the_element = driver.find_element_by_id(the_id)
right_click = ActionChains(driver).context_click(the_element)
right_click.perform()

19.點擊偏移

為了精確單擊畫布元素中的某個位置,您必須提供偏移量。

偏移量表示從畫布元素的左上角開始的向右和向下的像素數。

the_id = "register"
the_element = driver.find_element_by_id(the_id)
x = 30
y = 20
offset = ActionChains(driver).move_to_element_with_offset(the_element,x,y)
offset.click()
offset.perform()

您可以在此處閱讀如何使用Endtest進行操作。

20.按鍵

the_id = 'register'
element = driver.find_element_by_id(the_id)
element.send_keys(Keys.RETURN)

21.拖放

element_to_drag_id = 'ball'
target_element_id = 'goal'
element_to_drag = driver.find_element_by_id(element_to_drag_id)
target_element = driver.find_element_by_id(target_element_id)
ActionChains(driver).drag_and_drop(element_to_drag_id, target_element).perform()

22.獲取頁面源

the_page_source = driver.page_source

23.獲​​取Cookie

cookies_list = driver.get_cookies()

24.刪除Cookies

cookie_item = 'shopping_cart'
# delete one cookie
driver.delete_cookie(cookie_item)
# delete all cookies
driver.delete_all_cookies()

25.從列表中獲取第一個元素

the_id = 'register'
list_of_elements = driver.find_elements_by_id(the_id)
first_element = list_of_elements(0)

26.配置頁面載入超時

driver.set_page_load_timeout(20)

27.配置元素載入超時

from selenium.webdriver.support.ui import WebDriverWait

the_id = 'register'
WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID, the_id)))

28.設置窗口大小

driver.set_window_size(1600, 1200)

29.更改用戶代理字元串

the_user_agent = 'hello'
chromedriver = 'C:/tests/chromedriver.exe'
options = webdriver.ChromeOptions()
options.add_argument('--user-agent = '+ the_user_agent)
driver = webdriver.Chrome(
   executable_path = chromedriver, 
   chrome_options = options)

30.模擬攝像頭和麥克風

chromedriver = 'C:/tests/chromedriver.exe'
options = webdriver.ChromeOptions()
options.add_argument("--use-fake-ui-for-media-stream")
options.add_argument("--use-fake-device-for-media-stream")
driver = webdriver.Chrome(
   executable_path = chromedriver, 
   chrome_options = options)

31.添加Chrome擴展程序

chromedriver = 'C:/tests/chromedriver.exe'
extension_path = 'C:/tests/my_extension.zip'
options = webdriver.ChromeOptions()
options.add_extension(extension_path)
driver = webdriver.Chrome(
   executable_path = chromedriver, 
   chrome_options = options)

32.模擬移動設備

google_pixel_3_xl_user_agent = 'Mozilla/5.0 (Linux; Android 9.0; Pixel 3 XL Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.98 Mobile Safari/537.36'
pixel_3_xl_emulation = {
   "deviceMetrics": {
      "width": 411, 
      "height": 731, 
      "pixelRatio": 3
   },
   "userAgent": google_pixel_3_xl_user_agent
}
options = webdriver.ChromeOptions()
options.add_experimental_option("mobileEmulation", pixel_3_xl_emulation)
driver = webdriver.Chrome(
   executable_path = chromedriver, 
   chrome_options = options)

我♥️Selenium,但我改用Endtest。

它具有許多功能,例如:

  • Chrome擴展程序可以記錄您的測試
  • 在Windows和macOS機器上使用真實的瀏覽器訪問雲
  • 訪問真實的移動設備
  • 詳細日誌
  • 屏幕截圖比較
  • 測試執行的實時視頻
  • 測試執行的錄像
  • CSV文件的數據驅動測試
  • 排程器
  • 自動備份
  • 最終測試API
  • 郵件通知
  • 鬆弛通知
  • Webhook通知
  • 最終測試郵箱
  • 不同的地理位置(????????????)

「文檔」部分是金礦。 ?

資訊來源:由0x資訊編譯自DEV,原文:https://dev.to/razgandeanu/selenium-cheat-sheet-9lc ,版權歸作者所有,未經許可,不得轉載
你可能還喜歡