zoukankan      html  css  js  c++  java
  • Selenium

    Official API document: https://seleniumhq.github.io/selenium/docs/api/py/api.html

    Recommanded Import Style

    from selenium import webdriver

    Then, you can access the classes like this:

    webdriver.Firefox
    webdriver.FirefoxProfile
    webdriver.Chrome
    webdriver.ChromeOptions
    webdriver.Ie
    webdriver.Opera
    webdriver.PhantomJS
    webdriver.Remote
    webdriver.DesiredCapabilities
    webdriver.ActionChains
    webdriver.TouchActions
    webdriver.Proxy

    Other import:

    from selenium.webdriver.common.keys import Keys
    from selenium.common.exceptions import [TheNameOfTheExceptionClass]

    Conventions used in the API:

    driver.current_url
    
    driver.close()

    Exceptions:

    • selenium.common.exceptions.ElementNotSelectableException
    • selenium.common.exceptions.ElementNotVisibleException
    • selenium.common.exceptions.ErrorInResponseException
    • selenium.common.exceptions.ImeActivationFailedException
    • selenium.common.exceptions.ImeNotAvailableException
    • selenium.common.exceptions.InvalidCookieDomainException
    • selenium.common.exceptions.InvalidElementStateException
    • selenium.common.exceptions.InvalidSelectorException
    • selenium.common.exceptions.InvalidSwitchToTargetException
    • selenium.common.exceptions.MoveTargetOutOfBoundsException
    • selenium.common.exceptions.NoAlertPresentException
    • selenium.common.exceptions.NoSuchAttributeException
    • selenium.common.exceptions.NoSuchElementException
    • selenium.common.exceptions.NoSuchFrameException
    • selenium.common.exceptions.NoSuchWindowException
    • selenium.common.exceptions.RemoteDriverServerException
    • selenium.common.exceptions.StaleElementReferenceException
    • selenium.common.exceptions.TimeoutException
    • selenium.common.exceptions.UnableToSetCookieException
    • selenium.common.exceptions.UnexpectedAlertPresentException
    • selenium.common.exceptions.UnexpectedTagNameException
    • selenium.common.exceptions.WebDriverException

    Action Chains

    class selenium.webdriver.common.action_chains.ActionChains(driver)

    ActionChains are a way to automate low level interactions such as mouse movements, mouse button actions, key press, and context menu interactions. This is useful for doing more complex actions like hover over and drag and drop.

    Generate user actions.
    When you call methods for actions on the ActionChains object, the actions are stored in a queue in the ActionChains object. When you call perform(), the events are fired in the order they are queued up.

    ActionChains can be used in a chain pattern:

    menu = driver.find_element_by_css_selector(".nav")
    hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")
    
    ActionChains(driver).move_to_element(menu).click(hidden_submenu).perform()

    Or actions can be queued up one by one, then performed.:

    menu = driver.find_element_by_css_selector(".nav")
    hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")
    
    actions = ActionChains(driver)
    actions.move_to_element(menu)
    actions.click(hidden_submenu)
    actions.perform()

    Alerts

    class selenium.webdriver.common.alert.Alert(driver)

    Alert(driver).accept()
    Alert(driver).dismiss()

    Special Keys

    class selenium.webdriver.common.keys.Keys

    ADD = u'ue025'
    ALT = u'ue00a'
    ARROW_DOWN = u'ue015'
    ARROW_LEFT = u'ue012'
    ARROW_RIGHT = u'ue014'
    ARROW_UP = u'ue013'
    BACKSPACE = u'ue003'
    BACK_SPACE = u'ue003'
    CANCEL = u'ue001'
    CLEAR = u'ue005'
    COMMAND = u'ue03d'
    CONTROL = u'ue009'
    DECIMAL = u'ue028'
    DELETE = u'ue017'
    DIVIDE = u'ue029'
    DOWN = u'ue015'
    END = u'ue010'
    ENTER = u'ue007'
    EQUALS = u'ue019'
    ESCAPE = u'ue00c'
    F1 = u'ue031'
    F10 = u'ue03a'
    F11 = u'ue03b'
    F12 = u'ue03c'
    F2 = u'ue032'
    F3 = u'ue033'
    F4 = u'ue034'
    F5 = u'ue035'
    F6 = u'ue036'
    F7 = u'ue037'
    F8 = u'ue038'
    F9 = u'ue039'
    HELP = u'ue002'
    HOME = u'ue011'
    INSERT = u'ue016'
    LEFT = u'ue012'
    LEFT_ALT = u'ue00a'
    LEFT_CONTROL = u'ue009'
    LEFT_SHIFT = u'ue008'
    META = u'ue03d'
    MULTIPLY = u'ue024'
    NULL = u'ue000'
    NUMPAD0 = u'ue01a'
    NUMPAD1 = u'ue01b'
    NUMPAD2 = u'ue01c'
    NUMPAD3 = u'ue01d'
    NUMPAD4 = u'ue01e'
    NUMPAD5 = u'ue01f'
    NUMPAD6 = u'ue020'
    NUMPAD7 = u'ue021'
    NUMPAD8 = u'ue022'
    NUMPAD9 = u'ue023'
    PAGE_DOWN = u'ue00f'
    PAGE_UP = u'ue00e'
    PAUSE = u'ue00b'
    RETURN = u'ue006'
    RIGHT = u'ue014'
    SEMICOLON = u'ue018'
    SEPARATOR = u'ue026'
    SHIFT = u'ue008'
    SPACE = u'ue00d'
    SUBTRACT = u'ue027'
    TAB = u'ue004'
    UP = u'ue013'

    Locate elements By

    class selenium.webdriver.common.by.By

    CLASS_NAME = 'class name'
    CSS_SELECTOR = 'css selector'
    ID = 'id'
    LINK_TEXT = 'link text'
    NAME = 'name'
    PARTIAL_LINK_TEXT = 'partial link text'
    TAG_NAME = 'tag name'
    XPATH = 'xpath'

    Desired Capabilities

    class selenium.webdriver.common.desired_capabilities.DesiredCapabilities

    #Usage Example:
    
    from selenium import webdriver
    
    selenium_grid_url = “http://198.0.0.1:4444/wd/hub“
    
    # Create a desired capabilities object as a starting point. 
    capabilities = DesiredCapabilities.FIREFOX.copy() 
    capabilities[‘platform’] = “WINDOWS” 
    capabilities[‘version’] = “10# Instantiate an instance of Remote WebDriver with the desired capabilities. 
    driver = webdriver.Remote(desired_capabilities=capabilities,command_executor=selenium_grid_url)
    #Note: Always use ‘.copy()’ on the DesiredCapabilities object to avoid the side effects of altering the Global class instance.

    ANDROID = {'platform': 'ANDROID', 'browserName': 'android', 'version': '', 'javascriptEnabled': True}
    CHROME = {'platform': 'ANY', 'browserName': 'chrome', 'version': '', 'javascriptEnabled': True}
    EDGE = {'platform': 'WINDOWS', 'browserName': 'MicrosoftEdge', 'version': ''}
    FIREFOX = {'platform': 'ANY', 'browserName': 'firefox', 'version': '', 'marionette': False, 'javascriptEnabled': True}
    HTMLUNIT = {'platform': 'ANY', 'browserName': 'htmlunit', 'version': ''}
    HTMLUNITWITHJS = {'platform': 'ANY', 'browserName': 'htmlunit', 'version': 'firefox', 'javascriptEnabled': True}
    INTERNETEXPLORER = {'platform': 'WINDOWS', 'browserName': 'internet explorer', 'version': '', 'javascriptEnabled': True}
    IPAD = {'platform': 'MAC', 'browserName': 'iPad', 'version': '', 'javascriptEnabled': True}
    IPHONE = {'platform': 'MAC', 'browserName': 'iPhone', 'version': '', 'javascriptEnabled': True}
    OPERA = {'platform': 'ANY', 'browserName': 'opera', 'version': '', 'javascriptEnabled': True}
    PHANTOMJS = {'platform': 'ANY', 'browserName': 'phantomjs', 'version': '', 'javascriptEnabled': True}
    SAFARI = {'platform': 'MAC', 'browserName': 'safari', 'version': '', 'javascriptEnabled': True}

    Utilities

    selenium.webdriver.common.utils.find_connectable_ip(hostport=None)

    selenium.webdriver.common.utils.free_port()

    selenium.webdriver.common.utils.is_connectable(porthost='localhost')

    selenium.webdriver.common.utils.is_url_connectable(port)

    selenium.webdriver.common.utils.join_host_port(hostport)

    selenium.webdriver.common.utils.keys_to_typing(value)

    Firefox WebDriver

    class selenium.webdriver.firefox.webdriver.WebDriver(firefox_profile=Nonefirefox_binary=None,timeout=30capabilities=Noneproxy=Noneexecutable_path='wires'firefox_options=None)

    Chrome WebDriver

    class selenium.webdriver.chrome.webdriver.WebDriver(executable_path='chromedriver'port=0,chrome_options=Noneservice_args=Nonedesired_capabilities=Noneservice_log_path=None)

    Remote WebDriver

    class selenium.webdriver.remote.webdriver.WebDriver(command_executor='http://127.0.0.1:4444/wd/hub',desired_capabilities=Nonebrowser_profile=Noneproxy=Nonekeep_alive=Falsefile_detector=None)

    WebElement

    class selenium.webdriver.remote.webelement.WebElement(parentid_w3c=False)

    Represents a DOM element.

    Generally, all interesting operations that interact with a document will be performed through this interface.

    All method calls will do a freshness check to ensure that the element reference is still valid. This essentially determines whether or not the element is still attached to the DOM. If this test fails, then an StaleElementReferenceException is thrown, and all future calls to this instance will fail.

    UI Support

    class selenium.webdriver.support.select.Select(webelement)

    class selenium.webdriver.support.wait.WebDriverWait(drivertimeoutpoll_frequency=0.5,ignored_exceptions=None)

    Color Support

    class selenium.webdriver.support.color.Color(redgreenbluealpha=1)

    from selenium.webdriver.support.color import Color
    
    print(Color.from_string('#00ff33').rgba)
    print(Color.from_string('rgb(1, 255, 3)').hex)
    print(Color.from_string('blue').rgba)

    Expected conditions Support

    class selenium.webdriver.support.expected_conditions.alert_is_present

    class selenium.webdriver.support.expected_conditions.element_located_selection_state_to_be(locator,is_selected)

    class selenium.webdriver.support.expected_conditions.element_located_to_be_selected(locator)

    class selenium.webdriver.support.expected_conditions.element_selection_state_to_be(element,is_selected)

    class selenium.webdriver.support.expected_conditions.element_to_be_clickable(locator)

    class selenium.webdriver.support.expected_conditions.element_to_be_selected(element)

    class selenium.webdriver.support.expected_conditions.frame_to_be_available_and_switch_to_it(locator)

    class selenium.webdriver.support.expected_conditions.invisibility_of_element_located(locator)

    class selenium.webdriver.support.expected_conditions.presence_of_all_elements_located(locator)

    class selenium.webdriver.support.expected_conditions.presence_of_element_located(locator)

    class selenium.webdriver.support.expected_conditions.text_to_be_present_in_element(locator,text_)

    class selenium.webdriver.support.expected_conditions.staleness_of(element)

    class selenium.webdriver.support.expected_conditions.text_to_be_present_in_element(locator,text_)

    class selenium.webdriver.support.expected_conditions.text_to_be_present_in_element_value(locator,text_)

    class selenium.webdriver.support.expected_conditions.title_contains(title)

    class selenium.webdriver.support.expected_conditions.title_is(title)

    class selenium.webdriver.support.expected_conditions.visibility_of(element)

    class selenium.webdriver.support.expected_conditions.visibility_of_any_elements_located(locator)

    class selenium.webdriver.support.expected_conditions.visibility_of_element_located(locator)

    http://selenium-python.readthedocs.io/index.html

  • 相关阅读:
    centos7 hbase 搭建笔记
    【转】python 2.6.6升级到python 2.7.x版本的方法
    centos7 sqoop 1 搭建笔记
    centos7 hive + 远程mysql 搭建笔记
    docker 批量操作容器
    centos7 hdfs yarn spark 搭建笔记
    【转】mysql查看表空间占用情况
    【转】Centos 7 修改主机名hostname
    jQuery选择
    jQuery检查复选框是否被选
  • 原文地址:https://www.cnblogs.com/sufei-duoduo/p/5853411.html
Copyright © 2011-2022 走看看