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_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.activate_jquery()
self.create_tour(name=None, theme=None) self.create_tour(name=None, theme=None)

View File

@ -27,6 +27,7 @@ import math
import os import os
import pytest import pytest
import re import re
import requests
import sys import sys
import time import time
import traceback import traceback
@ -746,6 +747,35 @@ class BaseCase(unittest.TestCase):
'''h.appendChild(s);''') '''h.appendChild(s);''')
self.execute_script(add_css_style_script % re.escape(css_style)) 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): def activate_jquery(self):
""" If "jQuery is not defined", use this method to activate it for use. """ If "jQuery is not defined", use this method to activate it for use.
This happens because jQuery is not always defined on web sites. """ This happens because jQuery is not always defined on web sites. """