-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathwebscraping_test.py
141 lines (124 loc) · 4.37 KB
/
webscraping_test.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
129
130
131
132
133
134
135
136
137
138
139
140
141
import pytest
import abstractDriver
import messageAnnouncer
import pandas as pd
from typing import List
from webscraping import readConfig
from webscraping import scrape_idaweb_login
from webscraping import scrapeIdawebOrders
from webscraping import setAllStations
from webscraping import getUrls
from webscraping import startWebscraping
from webscraping import password as webscrapingPassword
announcer = messageAnnouncer.MessageAnnouncer()
abstractDriver = abstractDriver.AbstractDriver(announcer)
@pytest.mark.meteoschweiz
class TestMeteoSchweiz():
def test_meteoschweiz_title(self):
driver = abstractDriver.getDriver()
driver.get(
"https://www.meteoschweiz.admin.ch/home/klima/" +
"schweizer-klima-im-detail/homogene-messreihen-ab-1864.html" +
"?region=Tabelle"
)
title = driver.title
driver.quit()
assert title == 'Homogene Messreihen ab 1864 - MeteoSchweiz'
def test_meteoschweiz_xpath(self):
driver = abstractDriver.getDriver()
driver.get(
"https://www.meteoschweiz.admin.ch/home/klima/" +
"schweizer-klima-im-detail/homogene-messreihen-ab-1864.html" +
"?region=Tabelle"
)
urls = driver.find_elements_by_xpath(
"//table[@id='stations-table']/tbody/tr"
+ "/td/span[@class='overflow']/a")
driver.quit()
assert len(urls) == 30
def testSetAllStations(self):
allStationsDf = setAllStations()
if isinstance(allStationsDf, pd.DataFrame):
assert len(allStationsDf) == 0
else:
assert False
def getUrls(self):
driver = abstractDriver.getDriver()
urls = getUrls(driver)
if isinstance(urls, pd.DataFrame):
assert len(urls) != 0
else:
assert False
def testStartWebscrapingUrlList(self):
driver = abstractDriver.getDriver()
urls = getUrls(driver)
url_list = []
allStationsDf = setAllStations()
url_list, allStationsDf = startWebscraping(
url_list,
urls,
announcer,
allStationsDf
)
if isinstance(url_list, List):
assert len(url_list) != 0
else:
assert False
def testStartWebscrapingStations(self):
driver = abstractDriver.getDriver()
urls = getUrls(driver)
url_list = []
allStationsDf = setAllStations()
url_list, allStationsDf = startWebscraping(
url_list,
urls,
announcer,
allStationsDf
)
if isinstance(allStationsDf, List):
assert len(allStationsDf) != 0
else:
assert False
@pytest.mark.idaweb
class TestIDAWeb():
def test_idaweb_title(self):
driver = abstractDriver.getDriver()
driver.get("https://gate.meteoswiss.ch/idaweb/login.do")
title = driver.title
driver.quit()
assert title == 'MeteoSchweiz IDAWEB: Anmelden bei IDAWEB'
def test_idaweb_login_sucess(self):
username = "joel.grosjean@students.fhnw.ch"
password = webscrapingPassword
driver = abstractDriver.getDriver()
url = "https://gate.meteoswiss.ch/idaweb/login.do"
scrape_idaweb_login(driver, username, password)
assert driver.current_url is not url
def test_idaweb_login_faild(self):
username = "joel.grosjean@students.fhnw.ch"
password = "Wrong"
driver = abstractDriver.getDriver()
url = "https://gate.meteoswiss.ch/idaweb/login.do"
scrape_idaweb_login(driver, username, password)
assert driver.current_url == url
def testScrapeIdawebOrders(self):
driver = abstractDriver.getDriver()
orderDF = scrapeIdawebOrders(driver)
if isinstance(orderDF, pd.DataFrame):
assert len(orderDF) != 0
else:
assert False
def testReadConfigSuccess(self):
configFileName = "idawebConfig.xml"
configFile = readConfig(configFileName)
if isinstance(configFile, List):
assert len(configFile) != 0
else:
assert False
def testReadConfigFail(self):
configFileName = "wrongFile.xml"
configFile = readConfig(configFileName)
if isinstance(configFile, List):
assert len(configFile) == 0
else:
assert False