硒备忘单

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 ,版权归作者所有,未经许可,不得转载
你可能还喜欢