Skip to content

Commit e7d5783

Browse files
Add files via upload
1 parent cd8a0c0 commit e7d5783

File tree

5 files changed

+263
-0
lines changed

5 files changed

+263
-0
lines changed

selenium/make_random_header.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import random
2+
def make_headers():
3+
headers = {
4+
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
5+
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/{:02d}.0.{:04d}.{} Safari/537.36'.format(random.randint(63, 71), random.randint(0, 9999), random.randint(98, 132)),
6+
}
7+
# print(headers)
8+
return headers

selenium/python_selenium_options.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#!/usr/bin/env python
2+
# -*- coding: utf-8 -*-
3+
4+
# Chrome Options
5+
from selenium import webdriver
6+
from selenium.webdriver.chrome.options import Options
7+
8+
CHROME_OPTIONS = Options()
9+
CHROME_OPTIONS.add_argument("--headless")
10+
CHROME_OPTIONS.add_argument('--disable-gpu') # Last I checked this was necessary.
11+
CHROME_OPTIONS.add_argument('--disable-notifications')
12+
prefs = {"profile.managed_default_content_settings.images": 2, 'disk-cache-size': 4096}
13+
CHROME_OPTIONS.add_experimental_option('prefs', prefs) # image loading disable
14+
CHROME_OPTIONS.add_argument('--ignore-certificate-errors')
15+
CHROME_OPTIONS.add_argument("--test-type")
16+
CHROME_OPTIONS.add_argument('--disable-infobars')
17+
CHROME_OPTIONS.add_argument('--disable-extensions')
18+
CHROME_OPTIONS.add_argument('--profile-directory=Default')
19+
CHROME_OPTIONS.add_argument('--incognito')
20+
CHROME_OPTIONS.add_argument('--disable-plugins-discovery')
21+
CHROME_OPTIONS.add_argument('--start-maximized')
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
def build_chrome_options():
2+
chrome_options = webdriver.ChromeOptions()
3+
chrome_options.accept_untrusted_certs = True
4+
chrome_options.assume_untrusted_cert_issuer = True
5+
# chrome configuration
6+
# More: https://github.com/SeleniumHQ/docker-selenium/issues/89
7+
# And: https://github.com/SeleniumHQ/docker-selenium/issues/87
8+
chrome_options.add_argument("--no-sandbox")
9+
chrome_options.add_argument("--disable-impl-side-painting")
10+
chrome_options.add_argument("--disable-setuid-sandbox")
11+
chrome_options.add_argument("--disable-seccomp-filter-sandbox")
12+
chrome_options.add_argument("--disable-breakpad")
13+
chrome_options.add_argument("--disable-client-side-phishing-detection")
14+
chrome_options.add_argument("--disable-cast")
15+
chrome_options.add_argument("--disable-cast-streaming-hw-encoding")
16+
chrome_options.add_argument("--disable-cloud-import")
17+
chrome_options.add_argument("--disable-popup-blocking")
18+
chrome_options.add_argument("--ignore-certificate-errors")
19+
chrome_options.add_argument("--disable-session-crashed-bubble")
20+
chrome_options.add_argument("--disable-ipv6")
21+
chrome_options.add_argument("--allow-http-screen-capture")
22+
chrome_options.add_argument("--start-maximized")
23+
chrome_options.add_argument(
24+
'--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36')
25+
26+
return chrome_options

selenium/selenium_bw.py

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
################# import module #################
2+
3+
# selenium lib
4+
from selenium import webdriver
5+
# from seleniumwire import webdriver # for receive response
6+
from webdriver_manager.chrome import ChromeDriverManager
7+
from selenium.webdriver.chrome.options import Options
8+
from selenium.webdriver.support.ui import WebDriverWait
9+
from selenium.webdriver.support import expected_conditions as EC
10+
from selenium.webdriver.common.by import By
11+
from selenium.webdriver.support.ui import Select
12+
from selenium.webdriver.common.keys import Keys
13+
14+
# time lib
15+
from time import sleep
16+
import util
17+
18+
class Driver:
19+
def __init__(self):
20+
options = webdriver.ChromeOptions()
21+
# prefs = {"profile.default_content_setting_values.notifications" : 2} # disable alert part
22+
# options.add_experimental_option("prefs",prefs) # disable alert part
23+
# options.add_argument("--headless")
24+
# options.add_argument('--no-sandbox')
25+
# options.add_argument('--disable-dev-shm-usage')
26+
# options.add_argument('--ignore-certificate-errors') #disable ssl handshake err
27+
# options.add_argument('--ignore-ssl-errors') #disable ssl handshake err
28+
options.add_experimental_option("excludeSwitches", ['enable-automation']) # hide chrome is being contrlled
29+
# options.add_experimental_option("excludeSwitches", ["enable-logging"]) # hide Getting Bluetooth err
30+
# options.add_argument('--proxy-server=%s' % proxy) #set proxy # set proxy
31+
# options.add_argument(
32+
# "user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36")
33+
# options.binary_location = '/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary'
34+
# webdriver.DesiredCapabilities.CHROME['proxy']={
35+
# "httpProxy":proxy,
36+
# "ftpProxy":proxy,
37+
# "sslProxy":proxy,
38+
# "proxyType":"MANUAL",
39+
# }
40+
41+
self.driver = webdriver.Chrome(ChromeDriverManager().install(), options=options)
42+
43+
def __call__(self):
44+
return self.driver
45+
46+
def get_url(self, url):
47+
self.driver.get(url)
48+
49+
def get_default(self):
50+
while True:
51+
try:
52+
self.driver.switch_to.default_content()
53+
return
54+
except:
55+
print('default move frame')
56+
pass
57+
58+
def get_fra(self, name):
59+
while True:
60+
try:
61+
self.driver.switch_to.frame(name)
62+
break
63+
except:
64+
self.get_default()
65+
print(name, 'move frame')
66+
continue
67+
68+
def find_by_id(self, id):
69+
return WebDriverWait(self.driver, 10).until(
70+
EC.presence_of_element_located(
71+
(By.ID, id)))
72+
73+
def find_by_xpath(self, xpath):
74+
return WebDriverWait(self.driver, 10).until(
75+
EC.presence_of_element_located(
76+
(By.XPATH, xpath)))
77+
78+
def find_by_class(self, class_name):
79+
return WebDriverWait(self.driver, 10).until(
80+
EC.presence_of_element_located(
81+
(By.CLASS_NAME, class_name)))
82+
83+
def find_by_selector(self, class_name):
84+
return WebDriverWait(self.driver, 10).until(
85+
EC.presence_of_element_located(
86+
(By.CSS_SELECTOR, class_name)))
87+
88+
def find_by_tag(self, tag):
89+
return WebDriverWait(self.driver, 10).until(
90+
EC.presence_of_element_located(
91+
(By.TAG_NAME, tag)))
92+
93+
def find_by_name(self, name):
94+
return WebDriverWait(self.driver, 10).until(
95+
EC.presence_of_element_located(
96+
(By.NAME, name)))
97+
98+
def find_all_by_class(self, class_name):
99+
return WebDriverWait(self.driver, 10).until(
100+
EC.presence_of_all_elements_located(
101+
(By.TAG_NAME, class_name)))
102+
103+
def find_all_by_tag(self, tag):
104+
return WebDriverWait(self.driver, 10).until(
105+
EC.presence_of_all_elements_located(
106+
(By.TAG_NAME, tag)))
107+
108+
def find_all_by_name(self, name):
109+
return WebDriverWait(self.driver, 10).until(
110+
EC.presence_of_all_elements_located(
111+
(By.NAME, name)))
112+
113+
def find_all_by_tag_with_obj(self, obj, name):
114+
return WebDriverWait(obj, 20).until(
115+
EC.presence_of_all_elements_located(
116+
(By.TAG_NAME, name)))
117+
118+
def find_by_tag_with_obj(self, obj, name):
119+
return WebDriverWait(obj, 20).until(
120+
EC.presence_of_element_located(
121+
(By.TAG_NAME, name)))
122+
123+
def find_by_link(self, text):
124+
return WebDriverWait(self.driver, 10).until(
125+
EC.presence_of_element_located(
126+
(By.LINK_TEXT, text)))
127+
128+
def switch_to(self, str):
129+
self.driver.switch_to.frame(str)
130+
131+
def execute_script(self, str):
132+
self.driver.execute_script(str)
133+
134+
def full_screenshot(self):
135+
util.fullpage_screenshot(self.driver, "test.png")
136+
137+
def click(self, btn):
138+
self.driver.execute_script("arguments[0].click();", btn)
139+
140+
def close(self):
141+
self.driver.close()

selenium/selenium_opts.py

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
from selenium import webdriver
2+
# from selenium.webdriver.chrome.options import Options
3+
4+
5+
class SeleniumOpts:
6+
def __init__(self):
7+
options = webdriver.ChromeOptions()
8+
arg_list = [
9+
"--no-sandbox",
10+
"--disable-impl-side-painting",
11+
"--disable-setuid-sandbox",
12+
"--disable-seccomp-filter-sandbox",
13+
"--disable-breakpad",
14+
"--disable-client-side-phishing-detection",
15+
"--disable-cast",
16+
"--disable-cast-streaming-hw-encoding",
17+
"--disable-cloud-import",
18+
"--disable-popup-blocking",
19+
"--ignore-certificate-errors",
20+
"--disable-session-crashed-bubble",
21+
"--disable-ipv6",
22+
"--allow-http-screen-capture",
23+
"--start-maximized"
24+
]
25+
self.options = options
26+
self.arg_list = arg_list
27+
28+
def __call__(self):
29+
return self.options
30+
31+
def option_list(self):
32+
return self.arg_list
33+
34+
def set_option(self, option):
35+
return 0
36+
37+
38+
# ########## Additional options ########################################################################################
39+
40+
41+
def build_chrome_options():
42+
chrome_options = webdriver.ChromeOptions()
43+
chrome_options.accept_untrusted_certs = True
44+
chrome_options.assume_untrusted_cert_issuer = True
45+
# chrome configuration
46+
# More: https://github.com/SeleniumHQ/docker-selenium/issues/89
47+
# And: https://github.com/SeleniumHQ/docker-selenium/issues/87
48+
chrome_options.add_argument("--no-sandbox")
49+
chrome_options.add_argument("--disable-impl-side-painting")
50+
chrome_options.add_argument("--disable-setuid-sandbox")
51+
chrome_options.add_argument("--disable-seccomp-filter-sandbox")
52+
chrome_options.add_argument("--disable-breakpad")
53+
chrome_options.add_argument("--disable-client-side-phishing-detection")
54+
chrome_options.add_argument("--disable-cast")
55+
chrome_options.add_argument("--disable-cast-streaming-hw-encoding")
56+
chrome_options.add_argument("--disable-cloud-import")
57+
chrome_options.add_argument("--disable-popup-blocking")
58+
chrome_options.add_argument("--ignore-certificate-errors")
59+
chrome_options.add_argument("--disable-session-crashed-bubble")
60+
chrome_options.add_argument("--disable-ipv6")
61+
chrome_options.add_argument("--allow-http-screen-capture")
62+
chrome_options.add_argument("--start-maximized")
63+
chrome_options.add_argument(
64+
'--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
65+
+ 'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36')
66+
67+
return chrome_options

0 commit comments

Comments
 (0)