【问题标题】:Catching source with selenium before automatic redirect in python在 python 中自动重定向之前使用 selenium 捕获源
【发布时间】:2019-08-11 21:32:56
【问题描述】:

考虑以下页面: https://www.cvs.com/shop/advil-pain-reliever-fever-reducer-ibuprofen-tablets-200mg-prodid-1040240?skuid=420321

选择其他格式(例如 100 CT)时,会显示新价格。复制该 URL 并导航到它,注意它重定向回原来的 10 CT 页面。

我想知道 100 CT 页面上的价格。

这是我的代码,它点击了正确的格式,但是当我尝试重新获取 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)

【问题讨论】:

    标签: python selenium url-redirection


    【解决方案1】:

    这是运行并正确找到价格的代码。 您可以使用print (driver.find_element_by_css_selector("p.shoppdp-c-productPricing__actual").text)获取价格

    这里是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)))
    

    【讨论】:

    • 哪个库包含“wait_until_element_not_present”? selenium-python.readthedocs.io/waits.html
    • 不要将定位器类型和定位器作为字符串传递,而是像this answer 那样将其作为三元组传递。现在您不必解析定位器类型并以不同的方式处理每一个。它将您的功能变成更易于管理和更灵活的单线。
    【解决方案2】:

    @supputuri 的答案是正确的,只是我将 wait_until_element_not_present 替换为以下内容

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-09
      • 1970-01-01
      • 1970-01-01
      • 2018-07-21
      • 2012-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多