Coverage for amazonorders/constants.py: 100.00%

55 statements  

« prev     ^ index     » next       coverage.py v7.4.1, created at 2024-01-30 14:24 +0000

1__author__ = "Alex Laird" 

2__copyright__ = "Copyright 2024, Alex Laird" 

3__version__ = "1.0.7" 

4 

5########################################################################## 

6# General URL 

7########################################################################## 

8 

9BASE_URL = "https://www.amazon.com" 

10 

11########################################################################## 

12# URLs for AmazonSession 

13########################################################################## 

14 

15SIGN_IN_URL = "{}/gp/sign-in.html".format(BASE_URL) 

16SIGN_IN_REDIRECT_URL = "{}/ap/signin".format(BASE_URL) 

17SIGN_OUT_URL = "{}/gp/sign-out.html".format(BASE_URL) 

18 

19########################################################################## 

20# URLs for AmazonOrders 

21########################################################################## 

22 

23ORDER_HISTORY_LANDING_URL = "{}/gp/css/order-history".format(BASE_URL) 

24ORDER_HISTORY_URL = "{}/your-orders/orders".format(BASE_URL) 

25ORDER_DETAILS_URL = "{}/gp/your-account/order-details".format(BASE_URL) 

26HISTORY_FILTER_QUERY_PARAM = "timeFilter" 

27 

28########################################################################## 

29# Headers 

30########################################################################## 

31 

32BASE_HEADERS = { 

33 "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", 

34 "Accept-Encoding": "gzip, deflate, br", 

35 "Accept-Language": "en-US,en;q=0.9", 

36 "Cache-Control": "max-age=0", 

37 "Content-Type": "application/x-www-form-urlencoded", 

38 "Origin": BASE_URL, 

39 "Referer": SIGN_IN_REDIRECT_URL, 

40 "Sec-Ch-Ua": '"Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"', 

41 "Sec-Ch-Ua-Mobile": "?0", 

42 "Sec-Ch-Ua-Platform": "macOS", 

43 "Sec-Ch-Viewport-Width": "1393", 

44 "Sec-Fetch-Dest": "document", 

45 "Sec-Fetch-Mode": "navigate", 

46 "Sec-Fetch-Site": "same-origin", 

47 "Sec-Fetch-User": "?1", 

48 "Viewport-Width": "1393", 

49 "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", 

50} 

51 

52########################################################################## 

53# CSS selectors for AuthForms 

54########################################################################## 

55 

56SIGN_IN_FORM_SELECTOR = "form[name='signIn']" 

57MFA_DEVICE_SELECT_FORM_SELECTOR = "form#auth-select-device-form" 

58MFA_DEVICE_SELECT_INPUT_SELECTOR = "input[name='otpDeviceContext']" 

59MFA_FORM_SELECTOR = "form#auth-mfa-form" 

60CAPTCHA_1_FORM_SELECTOR = "form.cvf-widget-form-captcha" 

61CAPTCHA_2_FORM_SELECTOR = "form:has(input[id^='captchacharacters'])" 

62CAPTCHA_OTP_FORM_SELECTOR = "form#verification-code-form" 

63DEFAULT_ERROR_TAG_SELECTOR = "div#auth-error-message-box" 

64CAPTCHA_1_ERROR_SELECTOR = "div.cvf-widget-alert" 

65CAPTCHA_2_ERROR_SELECTOR = "div.a-alert-info" 

66 

67########################################################################## 

68# CSS selectors for pagination 

69########################################################################## 

70 

71NEXT_PAGE_LINK_SELECTOR = "ul.a-pagination li.a-last a" 

72 

73########################################################################## 

74# CSS selectors for Entities and Fields 

75# 

76# A ``FIELD_`` selector can be either a ``str`` or a ``list``. If a 

77# ``list`` is given, each selector in the list will be tried. The 

78# ``Parsable`` contains helper functions for parsing fields, including 

79# ``simple_parse()``, which is suitable for most fields when a ``FIELD_`` 

80# is passed. 

81########################################################################## 

82 

83ORDER_HISTORY_ENTITY_SELECTOR = "div.order" 

84ORDER_DETAILS_ENTITY_SELECTOR = "div#orderDetails" 

85ITEM_ENTITY_SELECTOR = "div:has(> div.yohtmlc-item)" 

86SHIPMENT_ENTITY_SELECTOR = "div.shipment" 

87 

88##################################### 

89# CSS selectors for Item fields 

90##################################### 

91 

92FIELD_ITEM_IMG_LINK_SELECTOR = "a img" 

93FIELD_ITEM_QUANTITY_SELECTOR = "span.item-view-qty" 

94FIELD_ITEM_TITLE_SELECTOR = ".yohtmlc-item a" 

95FIELD_ITEM_LINK_SELECTOR = ".yohtmlc-item a" 

96FIELD_ITEM_TAG_ITERATOR_SELECTOR = ".yohtmlc-item div" 

97 

98##################################### 

99# CSS selectors for Order fields 

100##################################### 

101 

102FIELD_ORDER_DETAILS_LINK_SELECTOR = "a.yohtmlc-order-details-link" 

103FIELD_ORDER_NUMBER_SELECTOR = "bdi[dir='ltr']" 

104FIELD_ORDER_GRAND_TOTAL_SELECTOR = "div.yohtmlc-order-total span.value" 

105FIELD_ORDER_PLACED_DATE_SELECTOR = ["span.order-date-invoice-item", "div.a-span3"] 

106FIELD_ORDER_PAYMENT_METHOD_SELECTOR = "img.pmts-payment-credit-card-instrument-logo" 

107FIELD_ORDER_PAYMENT_METHOD_LAST_4_SELECTOR = "img.pmts-payment-credit-card-instrument-logo" 

108FIELD_ORDER_SUBTOTALS_TAG_ITERATOR_SELECTOR = "div#od-subtotals div.a-row" 

109FIELD_ORDER_SUBTOTALS_INNER_TAG_SELECTOR = "div.a-span-last" 

110FIELD_ORDER_ADDRESS_SELECTOR = "div.displayAddressDiv" 

111FIELD_ORDER_ADDRESS_FALLBACK_1_SELECTOR = "div.recipient span.a-declarative" 

112FIELD_ORDER_ADDRESS_FALLBACK_2_SELECTOR = "script[id^='shipToData']" 

113FIELD_ORDER_SHIPPED_DATE_SELECTOR = "#orderDetails div.a-box.a-last div div div.a-row:not(.a-color-success)" 

114FIELD_ORDER_REFUND_COMPLETED_DATE = "#orderDetails div.a-box.a-last div div div.a-row.a-color-success" 

115 

116##################################### 

117# CSS selectors for Shipment fields 

118##################################### 

119 

120FIELD_SHIPMENT_TRACKING_LINK_SELECTOR = "span.track-package-button a" 

121FIELD_SHIPMENT_DELIVERY_STATUS_SELECTOR = "div.js-shipment-info-container div.a-row" 

122 

123##################################### 

124# CSS selectors for Recipient fields 

125##################################### 

126 

127FIELD_RECIPIENT_NAME_SELECTOR = ["li.displayAddressFullName", "div:nth-child(1)"] 

128FIELD_RECIPIENT_ADDRESS1_SELECTOR = "li.displayAddressAddressLine1" 

129FIELD_RECIPIENT_ADDRESS2_SELECTOR = "li.displayAddressAddressLine2" 

130FIELD_RECIPIENT_ADDRESS_CITY_STATE_POSTAL_SELECTOR = "li.displayAddressCityStateOrRegionPostalCode" 

131FIELD_RECIPIENT_ADDRESS_COUNTRY_SELECTOR = "li.displayAddressCountryName" 

132FIELD_RECIPIENT_ADDRESS_FALLBACK_SELECTOR = "div:nth-child(2)" 

133 

134##################################### 

135# CSS selectors for Seller fields 

136##################################### 

137 

138FIELD_SELLER_NAME_SELECTOR = ["a", "span"] 

139FIELD_SELLER_LINK_SELECTOR = "a"