Skip to content

Commit 1268376

Browse files
committed
Add new methods for website manipulation
1 parent 5531091 commit 1268376

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

help_docs/method_summary.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,10 @@ self.add_js_link(js_link)
8989

9090
self.add_css_style(css_style)
9191

92+
self.add_js_code_from_link(js_link)
93+
94+
self.add_meta_tag(http_equiv=None, content=None):
95+
9296
self.activate_jquery()
9397

9498
self.create_tour(name=None, theme=None)

seleniumbase/fixtures/base_case.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ def test_anything(self):
2727
import os
2828
import pytest
2929
import re
30+
import requests
3031
import sys
3132
import time
3233
import traceback
@@ -746,6 +747,35 @@ def add_css_style(self, css_style):
746747
'''h.appendChild(s);''')
747748
self.execute_script(add_css_style_script % re.escape(css_style))
748749

750+
def add_js_code_from_link(self, js_link):
751+
if js_link.startswith("//"):
752+
js_link = "http:" + js_link
753+
js_code = requests.get(js_link).text
754+
add_js_code_script = (
755+
'''var h = document.getElementsByTagName('head').item(0);'''
756+
'''var s = document.createElement("script");'''
757+
'''s.type = "text/javascript";'''
758+
'''s.onload = function() {$("html")};'''
759+
'''s.appendChild(document.createTextNode("%s"));'''
760+
'''h.appendChild(s);''')
761+
self.execute_script(add_js_code_script % re.escape(js_code))
762+
763+
def add_meta_tag(self, http_equiv=None, content=None):
764+
if http_equiv is None:
765+
http_equiv = "Content-Security-Policy"
766+
if content is None:
767+
content = ("default-src *; style-src 'self' 'unsafe-inline'; "
768+
"script-src: 'self' 'unsafe-inline' 'unsafe-eval'")
769+
script_to_add_meta = (
770+
"""function injectMeta() {
771+
var meta = document.createElement('meta');
772+
meta.httpEquiv = "%s";
773+
meta.content = "%s";
774+
document.getElementsByTagName('head')[0].appendChild(meta);
775+
}
776+
injectMeta();""" % (http_equiv, content))
777+
self.execute_script(script_to_add_meta)
778+
749779
def activate_jquery(self):
750780
""" If "jQuery is not defined", use this method to activate it for use.
751781
This happens because jQuery is not always defined on web sites. """

0 commit comments

Comments
 (0)