Add new methods for website manipulation

This commit is contained in:
Michael Mintz 2018-08-10 00:20:30 -04:00
parent 5531091ec5
commit 1268376822
2 changed files with 34 additions and 0 deletions

View File

@ -89,6 +89,10 @@ self.add_js_link(js_link)
self.add_css_style(css_style)
self.add_js_code_from_link(js_link)
self.add_meta_tag(http_equiv=None, content=None):
self.activate_jquery()
self.create_tour(name=None, theme=None)

View File

@ -27,6 +27,7 @@ import math
import os
import pytest
import re
import requests
import sys
import time
import traceback
@ -746,6 +747,35 @@ class BaseCase(unittest.TestCase):
'''h.appendChild(s);''')
self.execute_script(add_css_style_script % re.escape(css_style))
def add_js_code_from_link(self, js_link):
if js_link.startswith("//"):
js_link = "http:" + js_link
js_code = requests.get(js_link).text
add_js_code_script = (
'''var h = document.getElementsByTagName('head').item(0);'''
'''var s = document.createElement("script");'''
'''s.type = "text/javascript";'''
'''s.onload = function() {$("html")};'''
'''s.appendChild(document.createTextNode("%s"));'''
'''h.appendChild(s);''')
self.execute_script(add_js_code_script % re.escape(js_code))
def add_meta_tag(self, http_equiv=None, content=None):
if http_equiv is None:
http_equiv = "Content-Security-Policy"
if content is None:
content = ("default-src *; style-src 'self' 'unsafe-inline'; "
"script-src: 'self' 'unsafe-inline' 'unsafe-eval'")
script_to_add_meta = (
"""function injectMeta() {
var meta = document.createElement('meta');
meta.httpEquiv = "%s";
meta.content = "%s";
document.getElementsByTagName('head')[0].appendChild(meta);
}
injectMeta();""" % (http_equiv, content))
self.execute_script(script_to_add_meta)
def activate_jquery(self):
""" If "jQuery is not defined", use this method to activate it for use.
This happens because jQuery is not always defined on web sites. """