Python selenium.webdriver 模块,Firefox() 实例源码
我们从Python开源项目中,提取了以下47个代码示例,用于说明如何使用selenium.webdriver.Firefox()。
def inspectCart2(self):
print '\nINSPECT CART ----------------'
self.get_headers['Accept-Encoding'] = 'gzip, deflate, sdch, br'
self.get_headers['Referer'] = self.URL_product_url
session_get = self.user_session.get(url=self.URL_cart_url, headers=self.get_headers)
print 'Inspect Cart Status: ' + str(session_get.status_code)
cookies = self.user_session.cookies.get_dict()
with open('injectCookies', 'wb') as output:
output.write(json.dumps(cookies, indent=1))
driver = webdriver.Firefox()
driver.get(self.URL_cart_url)
driver.add_cookie(cookies)
driver.get(self.URL_cart_url)
def chrome(self):
# https://github.com/SeleniumHQ/selenium/blob/master/py/selenium/webdriver/remote/webdriver.py
# http://www.guguncube.com/2983/python-testing-selenium-with-google-chrome
# https://gist.github.com/addyosmani/5336747
# http://blog.likewise.org/2015/01/setting-up-chromedriver-and-the-selenium-webdriver-python-bindings-on-ubuntu-14-dot-04/
# https://sites.google.com/a/chromium.org/chromedriver/getting-started
# http://stackoverflow.com/questions/8255929/running-webdriver-chrome-with-selenium
chrome = webdriver.Chrome()
return chrome
# @property
# def firefox(self):
# profile = webdriver.FirefoxProfile()
# #firefox = webdriver.Firefox(firefox_profile=profile)
# firefox = WebDriver(firefox_profile=profile)
# return firefox
def main(username, account_password,destination):
profile = webdriver.FirefoxProfile()
profile.set_preference('browser.download.folderList', 2) # custom location
profile.set_preference('browser.download.manager.showWhenStarting', False)
profile.set_preference('browser.download.dir', destination)
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', "image/png,image/jpeg")
if not username == "NONE" and not account_password == "NONE" and not destination == "NONE":
display = Display(visible=0, size=(800, 600))
display.start()
driver = webdriver.Firefox(firefox_profile=profile)
driver.get("https://www.facebook.com")
email_id = driver.find_element_by_id("email")
password = driver.find_element_by_id("pass")
email_id.send_keys(username)
password.send_keys(account_password)
driver.find_element_by_id("loginbutton").click()
# driver.find_element_by_css_selector("._5afe.sortableItem").click()
driver.find_element_by_id("navItem_2305272732").click()
time.sleep(3)
list_of_images = driver.find_elements_by_css_selector(".uiMediaThumbImg")
list_of_images[0].click()
# print list_of_images
for image in list_of_images:
time.sleep(3)
driver.find_element_by_xpath("//div[@class = 'overlayBarButtons rfloat _ohf']/div/div/a").click()
time.sleep(3)
option = driver.find_element_by_xpath("//div[@class = 'uiContextualLayerPositioner uiLayer']/div/div/div[@class = '_54ng']/ul[@class = '_54nf']/li[4]/a")
option_name = option.find_element_by_xpath(".//*")
option_name = option_name.find_element_by_xpath(".//*")
if option_name.get_attribute('innerHTML').lower() == "download":
option_name.click()
# print option.get_attribute('innerHTML')
driver.find_element_by_css_selector(".snowliftPager.next.hilightPager").click()
display.stop()
else:
print "\nIncomplete Parameters, Program is Shutting Down."
def get_js_errors(self):
'''
Uses the JSErrorCollector plugin for Chrome / Firefox to get any JS errors.
[
{
'sourceName': u'tests/html/js_error.html',
'pageUrl': u'tests/html/js_error.html',
'errorMessage': 'ReferenceError: b is not defined',
'lineNumber': 7
}
]
'''
if self.driver in ('Chrome', 'Firefox'):
return self.js('return window.JSErrorCollector_errors ? window.JSErrorCollector_errors.pump() : []')
else:
print("Checking for JS errors with this method only works in Firefox or Chrome")
return []
def login():
driver = webdriver.Firefox()
driver.implicitly_wait(10)
driver.get("https://www.facebook.com")
driver.find_element_by_id('email').send_keys("email_address")
driver.find_element_by_id('pass').send_keys("password")
driver.find_element_by_id('u_0_n').click()
'''
time.sleep(1)
print "------- login ---------"
email = driver.find_element_by_id('email')
email.send_keys("email_address")
time.sleep(1)
password = driver.find_element_by_id('pass')
password.send_keys("password")
time.sleep(1)
password.send_keys(Keys.RETURN)
time.sleep(2)
driver.get("https://www.facebook.com")
time.sleep(1)
pickle.dump(driver.get_cookies(), open("cookies.pkl", "w"))
'''
def set_firefoxprofile(proxy_ip, proxy_port):
"""method to update the given preferences in Firefox profile"""
ff_profile = webdriver.FirefoxProfile()
if proxy_ip is not None and proxy_port is not None:
proxy_port = int(proxy_port)
ff_profile.set_preference("network.proxy.type", 1)
ff_profile.set_preference("network.proxy.http", proxy_ip)
ff_profile.set_preference("network.proxy.http_port", proxy_port)
ff_profile.set_preference("network.proxy.ssl", proxy_ip)
ff_profile.set_preference("network.proxy.ssl_port", proxy_port)
ff_profile.set_preference("network.proxy.ftp", proxy_ip)
ff_profile.set_preference("network.proxy.ftp_port", proxy_port)
ff_profile.update_preferences()
else:
ff_profile = None
return ff_profile
# private methods
def _make_ff(self, webdriver_remote_url, desired_capabilites, profile_dir,
binary, gecko_path):
"""Create an instance of firefox browser"""
try:
if webdriver_remote_url:
browser = self._create_remote_web_driver(
webdriver.DesiredCapabilities.FIREFOX,
webdriver_remote_url, desired_capabilites,
profile_dir)
else:
ff_capabilities = webdriver.DesiredCapabilities.FIREFOX
if ff_capabilities['marionette']:
ff_capabilities['acceptInsecureCerts'] = True
ffbinary = FirefoxBinary(binary)
browser = webdriver.Firefox(firefox_binary=ffbinary,
firefox_profile=profile_dir,
executable_path=gecko_path)
else:
browser = webdriver.Firefox(firefox_profile=profile_dir)
return browser
except WebDriverException as e:
if "executable needs to be in PATH" in str(e):
print_error("Please provide path for geckodriver executable")
elif "Expected browser binary location" in str(e):
print_error("Please provide path of firefox executable")
def click_page():
driver = webdriver.Firefox()
driver.get('http://yidao620c.github.io/archives/')
driver.maximize_window()
len1 = len(driver.find_elements_by_xpath(
'//div[@class="post-archive"]/ul[@class="listing"]/li/a'))
_log.info('????????...')
for k in range(1, 100):
logging.info('?{}???...'.format(k))
for i in range(0, len1):
l_xpath = '(//div[@class="post-archive"]/ul[@class="listing"]/li/a)[{}]'.format(i + 1)
ele = WebDriverWait(driver, 2).until(
EC.presence_of_element_located((By.XPATH, l_xpath))
)
ele.click()
driver.back()
_log.info('all finished.')
driver.close()
def create_selenium_driver(browser='chrome'):
# set default browser string based on env (if available)
env_browser = os.environ.get('TOASTER_TESTS_BROWSER')
if env_browser:
browser = env_browser
if browser == 'chrome':
return webdriver.Chrome(
service_args=["--verbose", "--log-path=selenium.log"]
)
elif browser == 'firefox':
return webdriver.Firefox()
elif browser == 'marionette':
capabilities = DesiredCapabilities.FIREFOX
capabilities['marionette'] = True
return webdriver.Firefox(capabilities=capabilities)
elif browser == 'ie':
return webdriver.Ie()
elif browser == 'phantomjs':
return webdriver.PhantomJS()
else:
msg = 'Selenium driver for browser %s is not available' % browser
raise RuntimeError(msg)
def getFirefox(tempDir='/tmp', showImage=1):
"""get Firefox Webdriver object
:param showImage: 2 = don't show, 1=show
"""
proxy = Proxy(dict(proxyType=ProxyType.AUTODETECT))
profile = webdriver.FirefoxProfile()
profile.set_preference("plugin.state.flash", 0)
profile.set_preference("plugin.state.java", 0)
profile.set_preference("media.autoplay.enabled", False)
# 2=dont_show, 1=normal
profile.set_preference("permissions.default.image", showImage)
profile.set_preference("webdriver.load.strategy", "unstable")
# automatic download
# 2 indicates a custom (see: browser.download.dir) folder.
profile.set_preference("browser.download.folderList", 2)
# whether or not to show the Downloads window when a download begins.
profile.set_preference("browser.download.manager.showWhenStarting", False)
profile.set_preference("browser.download.dir", tempDir)
profile.set_preference("browser.helperApps.neverAsk.saveToDisk",
"application/octet-stream"+
",application/zip"+
",application/x-rar-compressed"+
",application/x-gzip"+
",application/msword")
return webdriver.Firefox(firefox_profile=profile, proxy=proxy)
def setUpClass(cls):
super(LiveLocationTest, cls).setUpClass()
cls.browser = webdriver.Firefox()
cls.browser.delete_all_cookies()
cls.location = Location.objects.create(
title="Haus der Kulturen der Welt",
slug="hkw",
small_image="locations/2015/11/20151116013056_small.jpg",
medium_image="locations/2015/11/20151116013056_medium.jpg",
large_image="locations/2015/11/20151116013056_large.jpg",
)
cls.username = "test-admin"
cls.password = "test-admin"
cls.superuser = User.objects.create_superuser(
username=cls.username,
password=cls.password,
email="",
)
def load_driver(config, vdisplay=None):
"""Initialize a weddriver selected in config with given config.
Args:
config (dict): The configuration loaded previously in Cabu.
Returns:
webdriver (selenium.webdriver): An instance of selenium webdriver or None.
"""
if config['DRIVER_NAME'] == 'Firefox':
driver = load_firefox(config)
elif config['DRIVER_NAME'] == 'Chrome':
driver = load_chrome(config)
elif config['DRIVER_NAME'] == 'PhantomJS':
driver = load_phantomjs(config)
elif not config.get('DRIVER_NAME'):
return None
else:
raise DriverException(vdisplay, 'Driver unrecognized.')
driver.set_page_load_timeout(config['DRIVER_PAGE_TIMEOUT'])
driver.set_window_size(config['DRIVER_WINDOWS_WIDTH'], config['DRIVER_WINDOWS_HEIGHT'])
return driver
def init_driver(self):
global driver
if self.is_initialized:
return
if self.driver_name == 'chrome':
driver = webdriver.Chrome(executable_path=self.driver_path)
elif self.driver_name == 'phantomjs':
driver = webdriver.PhantomJS(executable_path=self.driver_path)
elif self.driver_name == 'firefox':
driver = webdriver.Firefox(executable_path=self.driver_path)
else:
raise Exception(
'Driver "{}" is not supported'.format(self.driver_name))
self.is_initialized = True
driver.set_window_size(self.width, self.height)
driver.implicitly_wait(5)
def process_request(self, request, spider):
try:
driver = webdriver.PhantomJS() #????????
# driver = webdriver.Firefox()
print "---"+str(request.meta["page"])+"-----js url start-------"
print datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
driver.get(self.pc_index_url+"&page="+str(request.meta["page"]) )
# time.sleep(1)
tmp=driver.find_element_by_id('sf-item-list-data').get_attribute("innerHTML")
print "---"+str(request.meta["page"])+"-----js url end-------"
print datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
body = tmp
return HtmlResponse(driver.current_url, body=body, encoding='utf-8', request=request)
except Exception,e:
print "-------------------"
print e.__doc__
print e.message
print "-------------------"
def get_selenium_driver(browser_name: str) -> Union[Chrome, Firefox]:
"""
Return the same instance to the Selenium driver.
:param browser_name: the name of the browser: chrome or mozilla
:type browser_name: str
:return: an instance of the required driver.
:rtype: Union[Chrome, Mozilla]
"""
if browser_name.upper() == 'CHROME':
return SingletonFactory.build(Chrome)
elif browser_name.upper() == 'Mozilla':
return SingletonFactory.build(Firefox)
else:
raise NotImplementedError
def get_page(key_words):
html = []
b = webdriver.PhantomJS(executable_path="phantomjs.exe")
#b = webdriver.Firefox()
b.get("https://world.taobao.com/")
time.sleep(3)
b.find_element_by_id('q').send_keys(key_words)
b.find_element_by_xpath('/html/body/div[1]/div[2]/div/div/div/div[2]/div[1]/div[2]/form/div[1]/button').click()
time.sleep(3)
b.execute_script("window.scrollTo(0, document.body.scrollHeight);")
b.maximize_window()
html.append(b.page_source.encode('gbk', 'ignore'))
for i in range(99):
b.find_element_by_xpath('/html/body/div[5]/div[4]/div/div[1]/div[1]/div[4]/div/div/a[last()]/span').click()
page = str(i+1)
time.sleep(5)
b.execute_script("window.scrollTo(0, document.body.scrollHeight);")
html.append(b.page_source.encode('gbk', 'ignore'))
print("?????%s?" %page)
b.close()
return html
#/html/body/div[5]/div[4]/div/div[1]/div[1]/div[4]/div/div/a[last()]/span
#/html/body/div[5]/div[4]/div/div[1]/div[1]/div[4]/div/div/a[7]/span
def main():
comment_urls = [
"http://www.theglobeandmail.com/opinion/a-fascists-win-americas-moral-loss/article32753320/comments/"
]
for comment_url in comment_urls:
driver = webdriver.Firefox()
driver.get(comment_url)
time.sleep(5)
htmlSource = driver.page_source
clk = driver.find_element_by_css_selector('div.c3qHyJD')
clk.click()
reaction_counts = driver.find_elements_by_class_name('c2oytXt')
for rc in reaction_counts:
print(rc.text)
driver.close() # close the browser
def __init__(self, proxy):
"""init the webdriver by setting the proxy and user-agent
Args:
proxy (str): proxy in the form of ip:port
"""
# set proxy
ip, port = proxy.split(':')
profile = webdriver.FirefoxProfile()
profile.set_preference("network.proxy.type", 1)
profile.set_preference("network.proxy.http", ip)
profile.set_preference("network.proxy.http_port", port)
# set user_agent
profile.set_preference("general.useragent.override", generate_user_agent())
profile.update_preferences()
self.driver = webdriver.Firefox(firefox_profile=profile)
print 'current proxy: %s'%proxy
def driver():
if exists(screenshot_dir):
shutil.rmtree(screenshot_dir)
os.mkdir(screenshot_dir)
firefox_path = '{0}/firefox/firefox'.format(DIR)
caps = DesiredCapabilities.FIREFOX
caps["marionette"] = True
caps['acceptSslCerts'] = True
binary = FirefoxBinary(firefox_path)
profile = webdriver.FirefoxProfile()
profile.add_extension('{0}/JSErrorCollector.xpi'.format(DIR))
profile.set_preference('app.update.auto', False)
profile.set_preference('app.update.enabled', False)
driver = webdriver.Firefox(profile,
capabilities=caps, log_path="{0}/firefox.log".format(LOG_DIR),
firefox_binary=binary, executable_path=join(DIR, 'geckodriver/geckodriver'))
# driver.set_page_load_timeout(30)
# print driver.capabilities['version']
return driver
def scrape_until(self, year):
""" Scrape all calender events from today until a given year.
Returns data as a list of dicts.
"""
self.driver = webdriver.Firefox()
self.start_url = "http://kongehuset.dk/menu/kalender"
# Get a list of all persons
self._open_calendar()
data = []
current_date = self.get_current_year_and_month()
while current_date["year"] > year:
print ("Parse %s, %s" % (current_date["month"], current_date["year"]))
month_data = self._parse_calender()
data += month_data
sleep(1)
self._go_to_previous_month()
current_date = self.get_current_year_and_month()
self.data = data
return data
def setup_vars():
reg_variable('USER', 'User for ebay')
reg_variable('PASSWORD', 'Password for ebay')
reg_variable('DRIVER', 'Driver to use with selenium', 'PhantomJS',
validate=lambda v: v in ('Chrome', 'Firefox', 'PhantomJS')
)
reg_variable('LOCALE', 'Localization for numerics and monetary stuff',
validate=lambda v: locale.setlocale(locale.LC_ALL, v)
)
reg_variable('BID_AHEAD_SECONDS', 'How many seconds before the actually specified time the bid should be placed',
value=3, type=int
)
reg_variable('HISTORY', 'History file',
os.path.expanduser("~/.ebay_hist")
)
#reg_variable('COOKIE_FILE', 'File for cookies. (Optional)',
# os.path.expandvars('/tmp/ebay-$USER-cookie')
#)
reg_variable('DEBUG', 'Print stacktraces and write ghostdriver.log', type=bool, value=0)
reg_variable('LOGIN_URL', 'URL for ebay login page', 'https://signin.ebay.de/ws/eBayISAPI.dll?SignIn')
reg_variable('LOGIN_URL_RE', 'RegEx to check if URL is a login page', 'https://signin.ebay.de')
reg_variable('LOGIN_FIELD_PASS_RE', 'RegEx to find password input field in login page', 'passwor')
reg_variable('LOGIN_FIELD_USER_RE', 'RegEx to find user input field in login page', 'e-mail')
def firefox(headless=True):
"""
Context manager returning Selenium webdriver.
Instance is reused and must be cleaned up on exit.
"""
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
if headless:
driver_key = 'headless'
firefox_options = Options()
firefox_options.add_argument('-headless')
else:
driver_key = 'headed'
firefox_options = None
# Load profile, if it exists:
if os.path.isdir(PROFILE_DIR):
firefox_profile = webdriver.FirefoxProfile(PROFILE_DIR)
else:
firefox_profile = None
if FIREFOX_INSTANCE[driver_key] is None:
FIREFOX_INSTANCE[driver_key] = webdriver.Firefox(
firefox_profile=firefox_profile,
firefox_options=firefox_options,
)
yield FIREFOX_INSTANCE[driver_key]
def __init__(self):
"""
Initializes a web client and logs the user in.
"""
with open('settings.yaml') as s:
settings = yaml.load(s)
print('Initializing web driver...')
if settings['showbrowser']:
self.driver = webdriver.Firefox(executable_path=settings['geckopath'])
else:
if settings['phantomjspath']:
self.driver = webdriver.PhantomJS(executable_path=settings['phantomjspath'])
else:
self.driver = webdriver.PhantomJS()
print('Logging in...')
self.__login()
print('Loading the schedule...')
self.__load_schedule()
def setup_class(self):
start_xvfb()
self.driver = webdriver.Firefox()
self.test_user = register_test_user(self.driver)
def setup_class(self):
start_xvfb()
self.driver = webdriver.Firefox()
self.test_user = register_test_user(self.driver)
def finalBossSEL(self):
driver = webdriver.Firefox()
driver.get(self.URL_pay_url)
driver.add_cookie(self.user_session.cookies)
def __init__(self):
self.br = mechanize.Browser()
#self.cj = cookielib.LWPCookieJar()
self.cj = cookielib.MozillaCookieJar()
self.br.set_cookiejar(self.cj)
self.br.set_handle_equiv(True)
self.br.set_handle_referer(True)
self.br.set_handle_robots(False)
self.br.addheaders = [('User-agent', 'Firefox')]
self.item_url = 'http://shop.bdgastore.com/collections/footwear/products/y-3-pureboost-zg'
# Create variables for user credentials and a function to import them
def checkCart(self):
print self.cj
#driver = webdriver.Firefox()
#driver.add_cookie(cj_dict)
#driver.get('http://shop.bdgastore.com/cart')
#print(driver.get_cookies())
#for cookie in self.cj:
# print cookie.name, cookie.value, cookie.domain
#try importing cookies manually vs using the requests util
#driver = webdriver.Chrome('./chromedriver')
def proxy(PROXY_HOST,PROXY_PORT):
fp = webdriver.FirefoxProfile()
print "[" + t.green("+") + "]Proxy host set to: " + PROXY_HOST
print "[" + t.green("+") + "]Proxy port set to: " + PROXY_PORT
print "\n[" + t.green("+") + "]Establishing connection..."
fp.set_preference("network.proxy.type", 1)
fp.set_preference("network.proxy.http",PROXY_HOST)
fp.set_preference("network.proxy.http_port",int(PROXY_PORT))
fp.set_preference("general.useragent.override","'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36'")
fp.update_preferences()
return webdriver.Firefox(firefox_profile=fp)
# Function to generate and process results based on input
def __init__(self):
self.display = Display(visible=0, size=(800, 600)) #???????
self.display.start()
# self.chromedriver = "/home/youmi/Downloads/chromedriver"
# self.driver = webdriver.Chrome(self.chromedriver) #??display???????
chromedriver = "/home/ubuntu/geckodriver"
self.driver = webdriver.Firefox(executable_path=chromedriver)
def parse_news(self,response):
# driver = webdriver.Chrome(self.chromedriver)
driver = webdriver.Firefox(executable_path=self.chromedriver)
item = response.meta.get("item",NewsItem())
page = response.meta.get("page",1)
index = response.meta.get("index",0)
origin_url = response.url
no_res = re.search(r"/(\d+)?.html",origin_url)
news_no = no_res.group(1) if no_res else None
driver.get(origin_url)
time.sleep(3)
code = driver.page_source
driver.quit()
soup = BeautifulSoup(code,"lxml")
# import pdb;pdb.set_trace()
authors = soup("span",class_="author-name")
referer_web = None
for a in authors:
if "??".decode("utf-8") in a.text:
referer_web = a.text[3:]
news_date = soup.find("span",class_="article-time").text if soup.find("span",class_="article-time") else None
content = soup.find("div",id="article_content").get_text(strip=True) if soup.find("div",id="article_content") else None
item["content"]=content
item["news_date"]=news_date
item["referer_web"]=referer_web
item["crawl_date"]=NOW
item["news_no"]=news_no
item =judge_news_crawl(item,end_day=2)
if item:
yield item
else:
self.flag=page
#??????????????????????
if index == 19 and not self.flag:
next_page = page+1
next_page_url = self.next_page_url % next_page
yield scrapy.Request(next_page,meta={"page":next_page})
def __init__(self):
self.display = Display(visible=0, size=(800, 600)) #???????
self.display.start()
# chromedriver = "/home/youmi/Downloads/chromedriver"
# self.driver = webdriver.Chrome(chromedriver) #??display???????
chromedriver = "/home/ubuntu/geckodriver"
self.driver = webdriver.Firefox(executable_path=chromedriver)
def get_browser():
browser = input("Are you using Chrome or Firefox? -- Enter C for Chrome, F for Firefox. Press X to exit.")
if browser == 'F':
return("Firefox")
elif browser == 'C':
return("Chrome")
elif browser == 'X':
sys.exit(1)
return("Exit")
else:
return("Invalid")
#function that obtains data from browser
def make_browser(cls):
# Build a selenium browser
try:
cls.browser = webdriver.PhantomJS()
except Exception:
try:
# Fall back to Firefox
cls.browser = webdriver.Firefox()
except:
raise Exception("Could not start a Firefox or PhantomJS instance!")
cls.browser.get("http://127.0.0.1:%i/" % cls.port_num)
# Setup to support routing
cls.app = cls._make_app()
def firefox_driver():
# Doesn't work with geckodriver! :(
capabilities = webdriver.DesiredCapabilities().FIREFOX
capabilities['acceptSslCerts'] = True
profile = webdriver.FirefoxProfile()
profile.accept_untrusted_certs = True
return webdriver.Firefox(firefox_profile=profile, capabilities=capabilities)
def Launch():
"""
Launch the Medium bot and ask the user what browser they want to use.
"""
if 'chrome' not in DRIVER.lower() and 'firefox' not in DRIVER.lower() and 'phantomjs' not in DRIVER.lower():
# Browser choice
print 'Choose your browser:'
print '[1] Chrome'
print '[2] Firefox/Iceweasel'
print '[3] PhantomJS'
while True:
try:
browserChoice = int(raw_input('Choice? '))
except ValueError:
print 'Invalid choice.',
else:
if browserChoice not in [1,2,3]:
print 'Invalid choice.',
else:
break
StartBrowser(browserChoice)
elif 'chrome' in DRIVER.lower():
StartBrowser(1)
elif 'firefox' in DRIVER.lower():
StartBrowser(2)
elif 'phantomjs' in DRIVER.lower():
StartBrowser(3)
def StartBrowser(browserChoice):
"""
Based on the option selected by the user start the selenium browser.
browserChoice: browser option selected by the user.
"""
if browserChoice == 1:
print '\nLaunching Chrome'
browser = webdriver.Chrome()
elif browserChoice == 2:
print '\nLaunching Firefox/Iceweasel'
browser = webdriver.Firefox()
elif browserChoice == 3:
print '\nLaunching PhantomJS'
browser = webdriver.PhantomJS()
if SignInToService(browser):
print 'Success!\n'
MediumBot(browser)
else:
soup = BeautifulSoup(browser.page_source, "lxml")
if soup.find('div', {'class':'alert error'}):
print 'Error! Please verify your username and password.'
elif browser.title == '403: Forbidden':
print 'Medium is momentarily unavailable. Please wait a moment, then try again.'
else:
print 'Please make sure your config is set up correctly.'
browser.quit()
def setup_class(self):
start_xvfb()
self.driver = webdriver.Firefox()
self.test_user = register_test_user(self.driver)
def setup_class(self):
start_xvfb()
self.driver = webdriver.Firefox()
self.test_user = register_test_user(self.driver)
def __init__(self):
"""
For firefox web driver's sake, we need to point to the location of the browser's installation.
We, then can pass that in the firefox_binary variable to the Firefox web driver parameter.
"""
binary = FirefoxBinary(settings.web_browser_location)
self.driver = webdriver.Firefox(firefox_binary=binary)
def screenShot(ImageFolder,IP):
'''
Metodo para hacer el screenshot con selenium haciendo la conexion
a la web en caso sea posible esa conexion.
'''
print '[INFO] Trying to connect to:',str(IP)
IP = str(IP)
if 'http' not in IP:
aux = 'http://'+IP
#ahora conectar y screenshot
try:
if not ImageFolder.endswith('/'):
nombreScreenShot = ImageFolder+'/'+IP+'.png'
else:
nombreScreenShot = ImageFolder+IP+'.png'
client = MongoClient()
db = client.test
db.Nobisuke.insert({"IP":str(IP),"Picture":str(nombreScreenShot),"bot":"Nobisuke Nobi"})
driver = webdriver.Firefox()
driver.get(aux)
driver.save_screenshot(nombreScreenShot)
driver.quit()
except Exception as e:
print '[-] ERROR TRYING SCREENSHOT: (%s) %s'%(IP,e)
def setup():
driver = webdriver.Firefox()
yield driver
driver.quit()
def accessToken(self):
browser = webdriver.Firefox()
browser.get("https://developers.facebook.com/tools/explorer")
def login(self):
browser = webdriver.Firefox()
browser.get("https://www.facebook.com")
browser.find_element_by_id('email').send_keys(self.username)
browser.find_element_by_id('pass').send_keys(self.password)
browser.find_element_by_id('u_0_n').click()
def __init__(self, driver, event_listener):
"""
Creates a new instance of the EventFiringWebDriver
:Args:
- driver : A WebDriver instance
- event_listener : Instance of a class that subclasses AbstractEventListener and implements it fully or partially
Example:
.. code-block:: python
from selenium.webdriver import Firefox
from selenium.webdriver.support.events import EventFiringWebDriver, AbstractEventListener
class MyListener(AbstractEventListener):
def before_navigate_to(self, url, driver):
print("Before navigate to %s" % url)
def after_navigate_to(self, url, driver):
print("After navigate to %s" % url)
driver = Firefox()
ef_driver = EventFiringWebDriver(driver, MyListener())
ef_driver.get("http://www.google.co.in/")
"""
if not isinstance(driver, WebDriver):
raise WebDriverException("A WebDriver instance must be supplied")
if not isinstance(event_listener, AbstractEventListener):
raise WebDriverException("Event listener must be a subclass of AbstractEventListener")
self._driver = driver
self._driver._wrap_value = self._wrap_value
self._listener = event_listener
def Launch():
# Check if the file 'config' exists, otherwise quit
if os.path.isfile('config') == False:
print ('Error! No configuration file.')
sys.exit()
# Check if the file 'visitedUsers.txt' exists, otherwise create it
if os.path.isfile('visitedUsers.txt') == False:
visitedUsersFile = open('visitedUsers.txt', 'wb')
visitedUsersFile.close()
# Browser choice
print ('Choose your browser:')
print ('[1] Chrome')
print ('[2] Firefox/Iceweasel')
print ('[3] Firefox/Iceweasel (light)')
print ('[4] PhantomJS')
print ('[5] PhantomJS (light)')
while True:
try:
browserChoice = int(input('Choice? '))
except ValueError:
print ('Invalid choice.')
else:
if browserChoice not in [1,2,3,4,5]:
print ('Invalid choice.')
else:
break
StartBrowser(browserChoice)
def get_browser(self):
"""get a webdriver browser instance """
if self.browser_name == 'firefox':
logger.debug("getting Firefox browser (local)")
if 'DISPLAY' not in os.environ:
logger.debug("exporting DISPLAY=:0")
os.environ['DISPLAY'] = ":0"
browser = webdriver.Firefox()
elif self.browser_name == 'chrome':
logger.debug("getting Chrome browser (local)")
browser = webdriver.Chrome()
elif self.browser_name == 'chrome-headless':
logger.debug('getting Chrome browser (local) with --headless')
chrome_options = Options()
chrome_options.add_argument("--headless")
browser = webdriver.Chrome(chrome_options=chrome_options)
elif self.browser_name == 'phantomjs':
logger.debug("getting PhantomJS browser (local)")
dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = self.user_agent
args = [
'--ssl-protocol=any',
'--ignore-ssl-errors=true',
'--web-security=false'
]
browser = webdriver.PhantomJS(
desired_capabilities=dcap, service_args=args
)
else:
raise SystemExit(
"ERROR: browser type must be one of 'firefox', 'chrome', "
"'phantomjs', or 'chrome-headless' not '{b}'".format(
b=self.browser_name
)
)
browser.set_window_size(1024, 768)
logger.debug("returning browser")
return browser