mirror of
https://github.com/Second-Hand-Friends/kleinanzeigen-bot.git
synced 2026-03-12 10:31:50 +01:00
fix: refactored setting shipping size (#584)
Co-authored-by: Jens Bergmann <1742418+1cu@users.noreply.github.com>
This commit is contained in:
@@ -1141,22 +1141,22 @@ class KleinanzeigenBot(WebScrapingMixin):
|
|||||||
return
|
return
|
||||||
|
|
||||||
shipping_options_mapping = {
|
shipping_options_mapping = {
|
||||||
"DHL_2": ("Klein", "Paket 2 kg"),
|
"DHL_2": ("Klein", "SMALL", "Paket 2 kg"),
|
||||||
"Hermes_Päckchen": ("Klein", "Päckchen"),
|
"Hermes_Päckchen": ("Klein", "SMALL", "Päckchen"),
|
||||||
"Hermes_S": ("Klein", "S-Paket"),
|
"Hermes_S": ("Klein", "SMALL", "S-Paket"),
|
||||||
"DHL_5": ("Mittel", "Paket 5 kg"),
|
"DHL_5": ("Mittel", "MEDIUM", "Paket 5 kg"),
|
||||||
"Hermes_M": ("Mittel", "M-Paket"),
|
"Hermes_M": ("Mittel", "MEDIUM", "M-Paket"),
|
||||||
"DHL_10": ("Groß", "Paket 10 kg"),
|
"DHL_10": ("Groß", "LARGE", "Paket 10 kg"),
|
||||||
"DHL_20": ("Groß", "Paket 20 kg"),
|
"DHL_20": ("Groß", "LARGE", "Paket 20 kg"),
|
||||||
"DHL_31,5": ("Groß", "Paket 31,5 kg"),
|
"DHL_31,5": ("Groß", "LARGE", "Paket 31,5 kg"),
|
||||||
"Hermes_L": ("Groß", "L-Paket"),
|
"Hermes_L": ("Groß", "LARGE", "L-Paket"),
|
||||||
}
|
}
|
||||||
try:
|
try:
|
||||||
mapped_shipping_options = [shipping_options_mapping[option] for option in set(ad_cfg.shipping_options)]
|
mapped_shipping_options = [shipping_options_mapping[option] for option in set(ad_cfg.shipping_options)]
|
||||||
except KeyError as ex:
|
except KeyError as ex:
|
||||||
raise KeyError(f"Unknown shipping option(s), please refer to the documentation/README: {ad_cfg.shipping_options}") from ex
|
raise KeyError(f"Unknown shipping option(s), please refer to the documentation/README: {ad_cfg.shipping_options}") from ex
|
||||||
|
|
||||||
shipping_sizes, shipping_packages = zip(*mapped_shipping_options, strict = False)
|
shipping_sizes, shipping_selector, shipping_packages = zip(*mapped_shipping_options, strict = False)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
shipping_size, = set(shipping_sizes)
|
shipping_size, = set(shipping_sizes)
|
||||||
@@ -1164,17 +1164,18 @@ class KleinanzeigenBot(WebScrapingMixin):
|
|||||||
raise ValueError("You can only specify shipping options for one package size!") from ex
|
raise ValueError("You can only specify shipping options for one package size!") from ex
|
||||||
|
|
||||||
try:
|
try:
|
||||||
shipping_size_radio = await self.web_find(By.CSS_SELECTOR, f'.SingleSelectionItem--Main input[type=radio][data-testid="{shipping_size}"]')
|
shipping_radio_selector = shipping_selector[0]
|
||||||
|
shipping_size_radio = await self.web_find(By.ID, f"radio-button-{shipping_radio_selector}")
|
||||||
shipping_size_radio_is_checked = hasattr(shipping_size_radio.attrs, "checked")
|
shipping_size_radio_is_checked = hasattr(shipping_size_radio.attrs, "checked")
|
||||||
|
|
||||||
if shipping_size_radio_is_checked:
|
if shipping_size_radio_is_checked:
|
||||||
unwanted_shipping_packages = [
|
unwanted_shipping_packages = [
|
||||||
package for size, package in shipping_options_mapping.values()
|
package for size, selector, package in shipping_options_mapping.values()
|
||||||
if size == shipping_size and package not in shipping_packages
|
if size == shipping_size and package not in shipping_packages
|
||||||
]
|
]
|
||||||
to_be_clicked_shipping_packages = unwanted_shipping_packages
|
to_be_clicked_shipping_packages = unwanted_shipping_packages
|
||||||
else:
|
else:
|
||||||
await self.web_click(By.CSS_SELECTOR, f'.SingleSelectionItem--Main input[type=radio][data-testid="{shipping_size}"]')
|
await self.web_click(By.ID, f"radio-button-{shipping_radio_selector}")
|
||||||
to_be_clicked_shipping_packages = list(shipping_packages)
|
to_be_clicked_shipping_packages = list(shipping_packages)
|
||||||
|
|
||||||
await self.web_click(By.XPATH, '//dialog//button[contains(., "Weiter")]')
|
await self.web_click(By.XPATH, '//dialog//button[contains(., "Weiter")]')
|
||||||
|
|||||||
@@ -1046,7 +1046,7 @@ class TestKleinanzeigenBotShippingOptions:
|
|||||||
return csrf_token_elem
|
return csrf_token_elem
|
||||||
if selector_value == "myftr-shppngcrt-frm":
|
if selector_value == "myftr-shppngcrt-frm":
|
||||||
return shipping_form_elem
|
return shipping_form_elem
|
||||||
if selector_value == '.SingleSelectionItem--Main input[type=radio][data-testid="Klein"]':
|
if selector_type == By.ID and selector_value.startswith("radio-button-"):
|
||||||
return shipping_size_radio
|
return shipping_size_radio
|
||||||
if selector_value == "postad-category-path":
|
if selector_value == "postad-category-path":
|
||||||
return category_path_elem
|
return category_path_elem
|
||||||
|
|||||||
Reference in New Issue
Block a user