首页 > 代码库 > Selenium - WebDriver Advanced Usage
Selenium - WebDriver Advanced Usage
Explicit Waits
# Pythonfrom selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWait # available since 2.4.0from selenium.webdriver.support import expected_conditions as EC # available since 2.26.0ff = 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
# Pythonfrom selenium.webdriver.support import expected_conditions as ECwait = WebDriverWait(driver, 10)element = wait.until(EC.element_to_be_clickable((By.ID,‘someid‘)))
Implicit Waits
# Pythonfrom selenium import webdriverff = webdriver.Firefox()ff.implicitly_wait(10) # secondsff.get("http://somedomain/url_that_delays_loading")myDynamicElement = ff.find_element_by_id("myDynamicElement")
Remote WebDriver
Taking a Screenshot
# Pythonfrom selenium import webdriverdriver = 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
# Pythonfrom selenium import webdriverfp = webdriver.FirefoxProfile()# set something on the profile...driver = webdriver.Remote(desired_capabilities=webdriver.DesiredCapabilities.FIREFOX, browser_profile=fp)
Using ChromeOptions
# Pythonfrom selenium import webdriveroptions = webdriver.ChromeOptions()# set some optionsdriver = webdriver.Remote(desired_capabilities=options.to_capabilities())
Using a Proxy
Internet Explorer
# Pythonfrom selenium import webdriverPROXY = "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 preferencesdriver = 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
# Pythonfrom selenium import webdriverfrom 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 remotecaps = webdriver.DesiredCapabilities.FIREFOX.copy()proxy.add_to_capabilities(caps)driver = webdriver.Remote(desired_capabilities=caps)
Data Driven Testing
# Python# Collection of String valuessource = open("input_file.txt", "r")values = source.readlines()source.close()# Execute For loop for each String in the values arrayfor 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
Selenium - WebDriver Advanced Usage
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。