Захват источника с селеном перед автоматическим перенаправлением в python - PullRequest
0 голосов
/ 21 марта 2019

Рассмотрим следующую страницу: https://www.cvs.com/shop/advil-pain-reliever-fever-reducer-ibuprofen-tablets-200mg-prodid-1040240?skuid=420321

При выборе другого формата, например 100 CT, появляется новая цена.Скопируйте этот URL и перейдите к нему, обратите внимание, что он перенаправляет обратно на исходную страницу 10 CT.

Я хочу узнать цену того, что на странице 100 КТ.

Вот мой код, который выбирает правильный формат, но когда я пытаюсь восстановить URL, я все равно получаю страницу 10 CT.

    format_header =  browser.find_element_by_css_selector("ul.--horizontalScroll.gbcvs-c-variantSelectorList")
    items = format_header.find_elements_by_tag_name('li')

    format_count = 1
    for item in items:
        text = item.text
        if(text == '100 CT'):
            break
        else: 
            format_count += 1

    browser.find_element_by_xpath("(.//*[normalize-space(text()) and normalize-space(.)='Count:'])[1]/following::label["+str(format_count)+"]").click()

    print(browser.current_url)

    browser.get(browser.current_url)

Ответы [ 2 ]

1 голос
/ 21 марта 2019

Вот код, который бежал и нашел цену правильно.Вы можете получить цену, используя print (driver.find_element_by_css_selector("p.shoppdp-c-productPricing__actual").text) enter image description here

Вот код метода для wait_until_element_not_present

def wait_until_element_not_present(locator_type,locator):
    if locator_type == 'xpath':
        WebDriverWait(driver, 10).until_not(EC.presence_of_element_located((By.XPATH, locator)))
    elif locator_type == "css":
        WebDriverWait(driver, 10).until_not(EC.presence_of_element_located((By.CSS_SELECTOR, locator)))
0 голосов
/ 21 марта 2019

@ supputuri ответ правильный, только я заменил wait_until_element_not_present следующим

    WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CLASS_NAME, "gbcvs-c-addToCart__inner"))
    )
...