forked from browserstack/automate-python-samples
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscreenshot-sample.py
More file actions
59 lines (54 loc) · 1.86 KB
/
screenshot-sample.py
File metadata and controls
59 lines (54 loc) · 1.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
"""
@param USERNAME: Browserstack username
@type USERNAME: string
@param BROWSERSTACK_ACCESS_KEY: Browserstack api key
@type BROWSERSTACK_ACCESS_KEY: string
@description: Supply these arguments from commandline while running this script
"""
import sys
import base64
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.remote.webdriver import WebDriver
# Input capabilities
caps = {}
caps["browser"] = "Firefox"
caps["browser_version"] = "24.0"
caps["os"] = "OS X"
caps["os_version"] = "Snow Leopard"
caps["browserstack.debug"] = "true"
# Take input of user credentials
try:
USERNAME = sys.argv[1]
BROWSERSTACK_ACCESS_KEY = sys.argv[2]
FILENAME = sys.argv[3]
except IndexError:
print("Pleaes provide the username, browserstack access key and filename with which screenshot should be saved as command line arguments.")
sys.exit(1)
# Define take_screenshot
def take_screenshot(webdriver, file_name="sample.png"):
"""
@param webdriver: WebDriver handler.
@type webdriver: WebDriver
@param file_name: Name to label this screenshot.
@type file_name: str
"""
if isinstance(webdriver, WebDriver):
base64_data = webdriver.get_screenshot_as_base64()
screenshot_data = base64.b64decode(base64_data)
screenshot_file = open(file_name, "wb")
screenshot_file.write(screenshot_data)
screenshot_file.close()
else:
webdriver.save_screenshot(filename)
driver = webdriver.Remote(
desired_capabilities = caps
)
driver.get("http://www.google.com")
inputElement = driver.find_element_by_name("q")
inputElement.send_keys("browserstack")
inputElement.submit()
print(driver.title)
take_screenshot(driver, FILENAME)
driver.quit()