在 python 中自动重定向之前使用 selenium 捕获源
Catching source with selenium before automatic redirect in python
选择其他格式(如 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)
这是 运行 并正确找到价格的代码。
您可以使用 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)))
@supputuri 的回答是正确的,只是我把wait_until_element_not_present换成了下面的
WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.CLASS_NAME, "gbcvs-c-addToCart__inner"))
)
选择其他格式(如 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)
这是 运行 并正确找到价格的代码。
您可以使用 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)))
@supputuri 的回答是正确的,只是我把wait_until_element_not_present换成了下面的
WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CLASS_NAME, "gbcvs-c-addToCart__inner")) )