-
Notifications
You must be signed in to change notification settings - Fork 0
/
local_tests_only.py
128 lines (95 loc) · 4.29 KB
/
local_tests_only.py
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# Built-in imports
from sys import platform
import glob
import time
from unittest import result
# External imports
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--enable-javascript")
chrome_options.add_argument("--disable-gpu")
if platform == "linux":
print("Configuring Linux driver...")
chrome_options.binary_location = "/opt/chrome/chrome"
chrome_options.add_argument("--headless")
chrome_options.add_argument("--window-size=1920,1080")
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-dev-shm-usage")
chrome_options.add_argument("--single-process")
chrome_options.add_argument("--user-data-dir=/tmp/chrome-user-data")
# chrome_options.add_argument("--disable-dev-tools")
# chrome_options.add_argument("--no-zygote")
# chrome_options.add_argument("--single-process")
# chrome_options.add_argument("window-size=2560x1440")
# chrome_options.add_argument("--user-data-dir=/tmp/chrome-user-data")
# chrome_options.add_argument("--remote-debugging-port=9222")
prefs = {
"profile.default_content_setting_values.automatic_downloads": 1,
"download.default_directory": "/tmp/test0001"
}
chrome_options.add_experimental_option("prefs", prefs)
elif platform == "win32":
prefs = {
"profile.default_content_setting_values.automatic_downloads": 1,
}
chrome_options.add_experimental_option("prefs", prefs)
print("Configuring Windows driver...")
else:
print("Your OS platform ({}) is not supported!".format(platform))
exit()
# Must enable JavaScript to run driver on this target page
# driver = webdriver.Chrome("/opt/chromedriver", service=Service(ChromeDriverManager().install()), options=chrome_options)
driver = webdriver.Chrome("/opt/chromedriver", options=chrome_options)
def simple_wait(seconds_to_wait=3):
"""
Simple function to wait N amount of seconds.
"""
print("Waiting for {} seconds...".format(seconds_to_wait))
time.sleep(seconds_to_wait)
driver.get("https://data.cms.gov/provider-characteristics/medicare-provider-supplier-enrollment/medicare-fee-for-service-public-provider-enrollment")
print("Site title is: {}".format(driver.title))
driver.maximize_window()
simple_wait(1)
# The following "XPATH" was found with "inspect" and on the "link" item, right ...
# ... click and then "Copy XPath" option and modifying the first div with "*" ...
# ... this was done for both options of links (that's why the "|" (OR) expression)
results = []
results.extend(driver.find_elements(By.XPATH, "//*[@id='DatasetPage']/div[1]/div[2]/div/div/div[3]/button/span[2]"))
# results.extend(driver.find_elements(By.CSS_SELECTOR, ".btn.btn-link.btn-lg"))
print("Results: ", results)
print("Found results were {} and they are:".format(len(results)))
for i in range(len(results)):
print(results[i].text)
download_element = results[0]
driver.execute_script("window.scrollTo(0, 200)")
simple_wait(1)
results[0].click()
simple_wait(1)
results = driver.find_elements(By.CLASS_NAME, "DownloadModal__form-section-latest.DownloadModal__form-section-inner")
print(results[0].text)
current_documents_version = results[0].text
print("current_documents_version: ", current_documents_version)
current_q = current_documents_version.split(" ")[0]
current_year = current_documents_version.split(" ")[1]
print("current_q: ", current_q)
print("current_year: ", current_year)
checkbox_items = driver.find_elements(By.XPATH, "//*/ul/li[*]/label")
print(checkbox_items)
driver.execute_script("arguments[0].scrollIntoView();", checkbox_items[0])
simple_wait()
for i in range(len(checkbox_items)):
print("Clicking element: ", checkbox_items[i])
checkbox_items[i].click()
simple_wait(1)
main_download_button = driver.find_element(By.XPATH, "//*[contains(text(), 'Download Files')]")
print(main_download_button)
main_download_button.click()
simple_wait(180)
driver.quit()