Skip to content

Commit 6f266b3

Browse files
authored
Merge pull request #4 from hhslepicka/edge
ENH: Add support for MS Edge browser.
2 parents cb2190f + 8687b87 commit 6f266b3

File tree

7 files changed

+75
-9
lines changed

7 files changed

+75
-9
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
* Python 3.7+
2222
* botcity-framework-base
2323
* beautifulsoup4
24+
* msedge-selenium-tools
2425
* numpy
2526
* opencv-python
2627
* pillow

botcity/web/browsers/__init__.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
import enum
22

3-
from selenium import webdriver
4-
53
from . import chrome
64
from . import firefox
5+
from . import edge
76

87

98
class Browser(str, enum.Enum):
@@ -13,20 +12,27 @@ class Browser(str, enum.Enum):
1312
Attributes:
1413
CHROME (str): Google Chrome
1514
FIREFOX (str): Mozilla Firefox
15+
EDGE (str): Microsoft Edge
1616
"""
1717
CHROME = "chrome"
1818
FIREFOX = "firefox"
19+
EDGE = "edge"
1920

2021

2122
BROWSER_CONFIGS = {
2223
Browser.CHROME: {
2324
"driver": "chromedriver",
24-
"class": webdriver.Chrome,
25+
"class": chrome.Chrome,
2526
"options": chrome.default_options
2627
},
2728
Browser.FIREFOX: {
2829
"driver": "geckodriver",
29-
"class": webdriver.Firefox,
30+
"class": firefox.Firefox,
3031
"options": firefox.default_options
3132
},
33+
Browser.EDGE: {
34+
"driver": "msedgedriver",
35+
"class": edge.Edge,
36+
"options": edge.default_options
37+
},
3238
}

botcity/web/browsers/chrome.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import os
33
import tempfile
44

5+
from selenium.webdriver import Chrome # noqa: F401, F403
56
from selenium.webdriver.chrome.options import Options as ChromeOptions
67

78
from ..util import cleanup_temp_dir

botcity/web/browsers/edge.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import atexit
2+
import os
3+
import tempfile
4+
5+
from msedge.selenium_tools import Edge, EdgeOptions # noqa: F401, F403
6+
7+
from ..util import cleanup_temp_dir
8+
9+
10+
def default_options(headless=False, download_folder_path=None, user_data_dir=None):
11+
edge_options = EdgeOptions()
12+
edge_options.use_chrome = True
13+
edge_options.add_argument("--disable-extensions")
14+
edge_options.add_argument("--remote-debugging-port=0")
15+
edge_options.add_argument("--no-first-run")
16+
edge_options.add_argument("--no-default-browser-check")
17+
edge_options.add_argument("--disable-background-networking")
18+
edge_options.add_argument("--disable-background-timer-throttling")
19+
edge_options.add_argument("--disable-client-side-phishing-detection")
20+
edge_options.add_argument("--disable-default-apps")
21+
edge_options.add_argument("--disable-extensions")
22+
edge_options.add_argument("--disable-hang-monitor")
23+
edge_options.add_argument("--disable-popup-blocking")
24+
edge_options.add_argument("--disable-prompt-on-repost")
25+
edge_options.add_argument("--disable-syncdisable-translate")
26+
edge_options.add_argument("--metrics-recording-only")
27+
edge_options.add_argument("--safebrowsing-disable-auto-update")
28+
29+
edge_options.add_argument("--disable-blink-features=AutomationControlled")
30+
31+
# Disable banner for Browser being remote-controlled
32+
edge_options.add_experimental_option("excludeSwitches", ["enable-automation"])
33+
edge_options.add_experimental_option('useAutomationExtension', False)
34+
35+
if headless:
36+
edge_options.add_argument("--headless")
37+
edge_options.add_argument("--disable-gpu")
38+
edge_options.add_argument("--hide-scrollbars")
39+
edge_options.add_argument("--mute-audio")
40+
41+
if not user_data_dir:
42+
temp_dir = tempfile.TemporaryDirectory(prefix="botcity_")
43+
user_data_dir = temp_dir.name
44+
atexit.register(cleanup_temp_dir, temp_dir)
45+
46+
edge_options.add_argument(f"--user-data-dir={user_data_dir}")
47+
48+
if not download_folder_path:
49+
download_folder_path = os.path.join(os.path.expanduser("~"), "Desktop")
50+
51+
# Set the Downloads default folder
52+
prefs = {"download.default_directory": download_folder_path}
53+
edge_options.add_experimental_option("prefs", prefs)
54+
55+
return edge_options

botcity/web/browsers/firefox.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import tempfile
44

55
from selenium import webdriver
6+
from selenium.webdriver import Firefox # noqa: F401, F403
67
from selenium.webdriver.firefox.options import Options as FirefoxOptions
78

89
from ..util import cleanup_temp_dir

docs/intro.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,11 @@ via code in your bot.
1111

1212
Here is a list of supported browsers along with links for you to download the proper WebDriver:
1313

14-
| Browser | WebDriver Download |
15-
|---------|--------------------------------------------------------------------------------|
16-
| Chrome | [ChromeDriver](https://sites.google.com/a/chromium.org/chromedriver/downloads) |
17-
| Firefox | [GeckoDriver](https://github.com/mozilla/geckodriver/releases) |
14+
| Browser | WebDriver Download |
15+
|---------|--------------------------------------------------------------------------------------|
16+
| Chrome | [ChromeDriver](https://sites.google.com/a/chromium.org/chromedriver/downloads) |
17+
| Firefox | [GeckoDriver](https://github.com/mozilla/geckodriver/releases) |
18+
| Edge | [MSDriverEdge](https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/)|
1819

1920
Please follow the instructions on the WebDriver website for installation and setup.
2021

requirements.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
botcity-framework-base>=0.2.0
22
beautifulsoup4
3+
msedge-selenium-tools
34
numpy
45
opencv-python
56
pillow
6-
selenium
7+
selenium==3.141

0 commit comments

Comments
 (0)