本文整理汇总了Python中selenium.webdriver.PhantomJS.set_window_size方法的典型用法代码示例。如果您正苦于以下问题:Python PhantomJS.set_window_size方法的具体用法?Python PhantomJS.set_window_size怎么用?Python PhantomJS.set_window_size使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类selenium.webdriver.PhantomJS
的用法示例。
在下文中一共展示了PhantomJS.set_window_size方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: generate_image
# 需要导入模块: from selenium.webdriver import PhantomJS [as 别名]
# 或者: from selenium.webdriver.PhantomJS import set_window_size [as 别名]
def generate_image(structure):
image_path = os.path.join(mkdtemp(), 'okc.png')
html_path = os.path.join(
os.path.dirname(os.path.realpath(__file__)),
'okc.html',
)
url = 'file://{}'.format(html_path)
driver = PhantomJS(service_log_path=mkstemp()[1])
driver.set_window_size(2000, 500)
driver.get(url)
driver.execute_script('setText({});'.format(json.dumps(structure)))
if random() > 0.4:
driver.execute_script('hideForm();')
elif random() > 0.5:
driver.execute_script('uncheckForm();')
driver.set_window_size(*driver.execute_script('return getSize();'))
driver.save_screenshot(image_path)
# twitter's gonna make our beautiful screenshot a jpeg unless we make it
# think that we're using transparency for a reason, so,,
img = Image.open(image_path)
origin = img.getpixel((0, 0))
new_origin = origin[:3] + (254,)
img.putpixel((0, 0), new_origin)
img.save(image_path)
subprocess.check_call(['optipng', '-quiet', image_path])
return image_path
示例2: post
# 需要导入模块: from selenium.webdriver import PhantomJS [as 别名]
# 或者: from selenium.webdriver.PhantomJS import set_window_size [as 别名]
def post(self):
id = request.values['page']
page = Page.objects.get_or_404(id=id)
# html = requests.get(page.baseurl).text
screenshot = None
try:
phantom = PhantomJS(desired_capabilities={'acceptSslCerts': True},
service_args=['--web-security=false',
'--ssl-protocol=any',
'--ignore-ssl-errors=true'], port=8888)
phantom.set_window_size(1024, 768)
phantom.get(page.baseurl)
html = phantom.page_source
screenshot = phantom.get_screenshot_as_png()
phantom.close()
except Exception as ex:
html = "error when i snap your page ... %s" % ex
snap = Snap(html, datetime.datetime.now(), screenshot).save()
page.update(push__snaps=snap)
snap = Snap(html, datetime.datetime.now(), screenshot).save()
page.update(push__snaps=snap)
return jsonify({'id': "%s" % snap.id})
示例3: get_ratio_data
# 需要导入模块: from selenium.webdriver import PhantomJS [as 别名]
# 或者: from selenium.webdriver.PhantomJS import set_window_size [as 别名]
def get_ratio_data():
import socket
import re
import time
import dryscrape
import webkit_server
from random import randint
from fake_useragent import UserAgent
from bs4 import BeautifulSoup
from selenium.webdriver import PhantomJS
from app.models import Company, Indicators
from app.utils import cash_to_float, depercentize
# Dict item with list: element attribute, attribute value to look for, optional transform function
indicators = {'roe': {
'attribute': 'data-reactid',
'value': re.compile(".*RETURN_ON_EQUITY\.1$"),
'transform': depercentize,
},
'fcf': {
'attribute': 'data-reactid',
'value': re.compile(".*LEVERED_FREE_CASH_FLOW\.1$"),
'transform': cash_to_float,
},
}
ua = UserAgent()
#with open("10.csv", "r") as f:
#with open("sp500-2.csv", "r") as f:
with open("10_stocks", "r") as f:
data = f.read()
symbols = []
for i in data.split("\n"):
if i:
symbols.append(i.split(",")[0])
print("Iterate through symbols")
## dryscrape
#session = dryscrape.Session()
#session.set_header('User-Agent', ua.random)
#session.set_timeout(5)
for symbol in symbols:
print("{} Fetching {} :".format(time.strftime("%H:%M:%S"), symbol))
import pdb; pdb.set_trace()
#driver = MyWebDriver()
driver = PhantomJS()
driver.set_window_size(1120, 550)
driver.get("http://finance.yahoo.com/quote/{}/key-statistics?p={}".format(symbol, symbol))
##try:
## session = dryscrape.Session()
##except socket.error as e:
## print("Failed to configure session {}".format(e))
## continue
##session.set_header('User-Agent', ua.random)
##session.set_timeout(30)
#try:
# #session.visit("http://finance.yahoo.com/quote/{}/key-statistics?p={}".format(symbol, symbol))
#except Exception as e:
# print e, "try once more......"
# session.reset()
# time.sleep(5)
# session = dryscrape.Session()
# #session.set_header('User-Agent', ua.random)
# try:
# session.set_timeout(5)
# session.visit("http://finance.yahoo.com/quote/{}/key-statistics?p={}".format(symbol, symbol))
# except Exception as e:
# print e, "done trying..."
# session.reset()
# time.sleep(2)
# session = dryscrape.Session()
# continue
#except socket.error as e:
# print("Failed to get {}, {} (1)".format(symbol, e))
# continue
#except webkit_server.EndOfStreamError as e:
# print("Failed to get {}, {}, breaking (2)".format(symbol, e))
# continue
#except webkit_server.InvalidResponseError as e:
# print("Failed to get {}, {}, breaking (3)".format(symbol, e))
# continue
#response = session.body()
#soup = BeautifulSoup(response, "lxml")
with open("{}.out".format(symbol), "w") as f:
#.........这里部分代码省略.........
示例4: Client
# 需要导入模块: from selenium.webdriver import PhantomJS [as 别名]
# 或者: from selenium.webdriver.PhantomJS import set_window_size [as 别名]
class Client(object):
"""Client HTTP pour tester fonctionnellement Strass
Adapteur du pilote Selenium, avec une interface inspirée de Nightwatch.js,
et quelques paramètres spécifiques à Strass."""
def __init__(self):
self.driver = PhantomJS()
self.driver.set_window_size(1120, 550)
def __del__(self):
self.driver.quit()
def get(self, query=None):
server = os.environ.get('STRASS_TEST_SERVER', 'http://localhost:8000')
url = server + (query or '/')
self.driver.get(url)
return self
def find(self, selector):
return self.driver.find_element_by_css_selector(selector)
def click(self, selector):
self.find(selector).click()
return self
def fill(self, selector, value):
if isinstance(value, datetime.date):
self.fill(selector + ' input.day', str(value.day))
self.fill(selector + ' input.month', str(value.month))
self.fill(selector + ' input.year', str(value.year))
else:
control = self.find(selector)
try:
control.clear()
except selexc.InvalidElementStateException:
# On doit tenter de nettoyer un input[type=file]. On zap.
pass
control.send_keys(value)
return self
def select(self, selector, value):
Select(self.find(selector)).select_by_value(value)
return self
def submit(self, selector='#document button[type=submit]'):
return self.click(selector)
def close(self):
self.driver.close()
if self.driver.window_handles:
self.driver.switch_to.window(self.driver.window_handles[0])
self.driver.set_window_size(1120, 550)
return self
def screenshot(self, filename):
self.driver.get_screenshot_as_file(filename)
sys.stderr.write("Capture d'écran enregistrée dans %r\n" % (filename,))
return self
def save(self, filename):
with open(filename, 'w') as fo:
fo.write(self.driver.page_source)
sys.stderr.write("HTML enregistré dans %r\n" % (filename,))
return self
def __getattr__(self, name):
return getattr(self.driver, name)
示例5: LegacySensCritique
# 需要导入模块: from selenium.webdriver import PhantomJS [as 别名]
# 或者: from selenium.webdriver.PhantomJS import set_window_size [as 别名]
class LegacySensCritique(object):
CHANGEPAGE_TIMEOUT = 20
'''
Interact with SensCritique website
'''
def __init__(self, login, password, userAgent=LINUX_USER_AGENT):
'''
Constructor
:param login:
:param password:
'''
self.login = login
self.password = password
dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = (
userAgent
)
self.driver = PhantomJS(desired_capabilities=dcap)
self.driver.set_window_size(1366, 768)
def sign_in(self):
'''
Sign-in to SensCritique using the given login details
:rtype: bool
:Return: true if login succeeded, false otherwise
'''
self.to(HomePage())
self.page.alreadySuscribed().click()
self.page.loginField().send_keys(self.login)
self.page.passwordField().send_keys(self.password)
self.page.submitLoginButton().click()
#TODO changing page so wait or something
currentUser = self.page.username(self.CHANGEPAGE_TIMEOUT)
if currentUser is not None:
self._currentUsername = currentUser.value()
logging.warn("Logged in with user " + self._currentUsername)
return True
else:
if self.page.loginError() is not None:
logging.error("Couldn't login : " + self.page.loginError().value())
return False
def is_logged_in(self):
return self.page is not None and self.page.username() is not None
def retrieveListById(self, listId):
self.to(ListCollectionPage(self._currentUsername))
for l in self.page.lists():
if listId in l.url():
return self.createSCListFromListModule(l)
return None
def retrieveListByTitle(self, title):
self.to(ListCollectionPage(self._currentUsername))
for l in self.page.lists():
if l.title() == title:
return self.createSCListFromListModule(l)
return None
def retrieveMoviesFromList(self, l : SCList):
self.to(ListPage(l))
for movie in self.page.movies():
yield movie
def createList(self, l : SCList):
self.to(ListCollectionPage(self._currentUsername))
self.page.create_list_button().click()
self.page.new_list_title().send_keys(l.title())
self.page.film_type_radio().click()
self.page.classic_list_radio().click()
self.page.public_list_radio().click()
self.page.confirm_create_list_button().click()
# Change the current page as we are now on the list page
self.page = ListPage(l)
self.page._driver = self.driver # TODO: fixme, we don't want to use self.to(page) as it would reload the page
#.........这里部分代码省略.........
示例6: get_ratio_data
# 需要导入模块: from selenium.webdriver import PhantomJS [as 别名]
# 或者: from selenium.webdriver.PhantomJS import set_window_size [as 别名]
def get_ratio_data():
import re
import time
from bs4 import BeautifulSoup
from app.models import Company, Indicators
from app.utils import cash_to_float, depercentize
# Dict item with list: element attribute, attribute value to look for, optional transform function
indicators = {'roe': {
'attribute': 'data-reactid',
'value': re.compile(".*RETURN_ON_EQUITY\.1$"),
'transform': depercentize,
},
'fcf': {
'attribute': 'data-reactid',
'value': re.compile(".*LEVERED_FREE_CASH_FLOW\.1$"),
'transform': cash_to_float,
},
'ev2ebitda': {
'attribute': 'data-reactid',
'value': re.compile(".*ENTERPRISE_VALUE_TO_EBITDA\.1$"),
},
}
companies = Company.query.with_entities(Company.symbol).all()
symbols = [company[0] for company in companies]
print("Iterate through symbols")
for symbol in symbols:
print("{} Fetching {} :".format(time.strftime("%H:%M:%S"), symbol))
#driver = MyWebDriver()
retry_current = 0
retry_limit = 5
while retry_current < retry_limit:
try:
driver = PhantomJS()
except URLError:
time.sleep(retry_current**2)
retry_current += 1
driver.set_window_size(1120, 550)
driver.get("http://finance.yahoo.com/quote/{}/key-statistics?p={}".format(symbol, symbol))
try:
#WebDriverWait(driver, 10).until(EC.title_contains("AAPL Key Statistics | Apple Inc. Stock - Yahoo Finance"))
#element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "td[reactid]")))
#element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//td[@data-reactid[ends-with(., 'RETURN_ON_EQUITY.1')]]")))
# these two seem to work...
element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//*[substring(@data-reactid, string-length(@data-reactid) - string-length('RETURN_ON_EQUITY.1') +1) = 'RETURN_ON_EQUITY.1']")))
#element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//*[contains(@data-reactid,'RETURN_ON_EQUITY.1')]")))
#"//input[@id[ends-with(.,'register')]]"
except TimeoutException as e:
print "Caught", e
print driver.title
continue
#time.sleep(5)
#with open("{}.out".format(symbol), "w") as f:
# f.write(driver.page_source.encode('utf-8'))
soup = BeautifulSoup(driver.page_source, "lxml")
d = {'symbol': symbol}
for indicator in indicators.keys():
curr_ind = indicators[indicator]
s = soup.find_all(attrs={curr_ind['attribute']: curr_ind['value']})
print indicator, s
for element in s:
if curr_ind.has_key('transform'):
f = curr_ind['transform']
#print(f(element.text))
d[indicator] = f(element.text)
else:
#print(element.text)
d[indicator] = element.text
try:
db.session.add(Indicators.from_json(d))
db.session.commit()
except (IntegrityError, UnmappedInstanceError) as e:
print "Caught", e
db.session.rollback()
print "indicators", d
示例7: PhantomJS
# 需要导入模块: from selenium.webdriver import PhantomJS [as 别名]
# 或者: from selenium.webdriver.PhantomJS import set_window_size [as 别名]
import os
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver import PhantomJS
ckan_user = os.environ['ckan_user']
ckan_password = os.environ['ckan_password']
ckan_api = os.environ['ckan_api']
ckan_url = 'http://127.0.0.1:5000'
headers = {
'Authorization': 'token {0}'.format(ckan_api),
'content-type': 'application/json'
}
phantom = PhantomJS(service_args=['--proxy-type=none', '--load-images=false'])
phantom.set_window_size(1024, 768)
def login_or_pass(driver):
try:
driver.find_element_by_class_name('username')
except NoSuchElementException:
driver.get(ckan_url)
driver.find_element_by_link_text('Log in').click()
driver.find_element_by_name('login').send_keys(ckan_user)
driver.find_element_by_name('password').send_keys(ckan_password)
driver.find_element_by_xpath(
'//*[@id="wb-auto-1"]/div/div/div/form/div[4]/button').click()
driver.find_element_by_class_name('username')
else:
return driver