zoukankan      html  css  js  c++  java
  • Selenium

    Explicit Waits

    # Python
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait # available since 2.4.0
    from selenium.webdriver.support import expected_conditions as EC # available since 2.26.0
    
    ff = webdriver.Firefox()
    ff.get("http://somedomain/url_that_delays_loading")
    try:
        element = WebDriverWait(ff, 10).until(EC.presence_of_element_located((By.ID, "myDynamicElement")))
    finally:
        ff.quit()
    • Expected Conditions

    # Python
    from selenium.webdriver.support import expected_conditions as EC
    wait = WebDriverWait(driver, 10)
    element = wait.until(EC.element_to_be_clickable((By.ID,'someid')))

    Implicit Waits

    # Python
    from selenium import webdriver
    
    ff = webdriver.Firefox()
    ff.implicitly_wait(10) # seconds
    ff.get("http://somedomain/url_that_delays_loading")
    myDynamicElement = ff.find_element_by_id("myDynamicElement")

    Remote WebDriver

    • Taking a Screenshot

    # Python
    from selenium import webdriver
    
    driver = webdriver.Remote("http://localhost:4444/wd/hub", webdriver.DesiredCapabilities.FIREFOX.copy())
    driver.get("http://www.google.com")
    driver.get_screenshot_as_file('/Screenshots/google.png')
    • Using a FirefoxProfile

    # Python
    from selenium import webdriver
    fp = webdriver.FirefoxProfile()
    # set something on the profile...
    driver = webdriver.Remote(desired_capabilities=webdriver.DesiredCapabilities.FIREFOX, browser_profile=fp)
    • Using ChromeOptions

    # Python
    from selenium import webdriver
    options = webdriver.ChromeOptions()
    # set some options
    driver = webdriver.Remote(desired_capabilities=options.to_capabilities())

    Using a Proxy

    • Internet Explorer

    # Python
    from selenium import webdriver
    
    PROXY = "localhost:8080"
    
    # Create a copy of desired capabilities object.
    desired_capabilities = webdriver.DesiredCapabilities.INTERNETEXPLORER.copy()
    # Change the proxy properties of that copy.
    desired_capabilities['proxy'] = {
        "httpProxy":PROXY,
        "ftpProxy":PROXY,
        "sslProxy":PROXY,
        "noProxy":None,
        "proxyType":"MANUAL",
        "class":"org.openqa.selenium.Proxy",
        "autodetect":False
    }
    
    # you have to use remote, otherwise you'll have to code it yourself in python to 
    # dynamically changing the system proxy preferences
    driver = webdriver.Remote("http://localhost:4444/wd/hub", desired_capabilities)
    • Chrome

      Is basically the same as internet explorer. It uses the same configuration on the machine as IE does (on windows). On Mac it uses the System Preference -> Network settings. On Linux it uses (on Ubuntu) System > Preferences > Network Proxy Preferences (Alternatively in “/etc/environment” set http_proxy). As of this writing it is unknown how to set the proxy programmatically.

    • Firefox

    # Python
    from selenium import webdriver
    from selenium.webdriver.common.proxy import *
    
    myProxy = "host:8080"
    
    proxy = Proxy({
        'proxyType': ProxyType.MANUAL,
        'httpProxy': myProxy,
        'ftpProxy': myProxy,
        'sslProxy': myProxy,
        'noProxy': '' # set this value as desired
        })
    
    driver = webdriver.Firefox(proxy=proxy)
    
    # for remote
    caps = webdriver.DesiredCapabilities.FIREFOX.copy()
    proxy.add_to_capabilities(caps)
    
    driver = webdriver.Remote(desired_capabilities=caps)

    Data Driven Testing

    # Python
    # Collection of String values
    source = open("input_file.txt", "r")
    values = source.readlines()
    source.close()
    # Execute For loop for each String in the values array
    for search in values:
        driver.get('http://www.google.com')
        driver.find_element_by_name("q").send_keys(search)
        driver.find_element_by_id("btnG").click()
        element = WebDriverWait(driver, 5).until(ExpectedConditions.presence_of_element_located((By.XPATH, "//*[contains(., 'Results')]"))
        assert search in element.text
  • 相关阅读:
    使用 yo 命令行向导给 SAP UI5 应用添加一个新的视图
    SAP Fiori Elements 应用的 manifest.json 文件运行时如何被解析的
    SAP UI5 标准应用的多语言支持
    微软 Excel 365 里如何设置下拉菜单和自动高亮成指定颜色
    SAP Fiori Elements 应用里的 Title 显示的内容是从哪里来的
    本地开发好的 SAP Fiori Elements 应用,如何部署到 ABAP 服务器上?
    如何在 Cypress 测试代码中屏蔽(Suppress)来自应用代码报出的错误消息
    教你一招:让集群慢节点无处可藏
    应用架构步入“无服务器”时代 Serverless技术迎来新发展
    MySQL数据库事务隔离性的实现
  • 原文地址:https://www.cnblogs.com/sufei-duoduo/p/5852678.html
Copyright © 2011-2022 走看看