我正在尝试使用Selenium Python从页面读取文本的值。元素始终是可见的,然后变为不可见,然后变为可见,并且文本值快速变化,直到达到最终值。我认为它正在使用某种形式的javascript在显示最终值之前获取值。
页面为https://www.junglescout.com/estimator/
我正在尝试从元素js-magic-result中获得估算结果。
我可以使用Selenium填写这三个表格,然后单击“计算销售额”按钮
我正在python硒中使用chromedriver读取值。
所有测试在加载完成之前为我提供了中间值之一。
我尝试使用浏览器的替代方式2.implicitly_wait(5):
driver.implicitly_wait(5)
wait = WebDriverWait(browser2,3)
wait.until(EC.invisibility_of_element_located((By.CLASS_NAME,'js-magic-result')))
wait.until(EC.visibility_of_element_located((By.CLASS_NAME,'js-magic-result')))
这是我正在使用的完整代码
browser2 = webdriver.Chrome(options=options,executable_path=driverPath)
url = 'https://www.junglescout.com/estimator/'
browser2.get(url)
container = browser2.find_element_by_class_name('js-estimation-section')
rankField = container.find_element_by_name('theRankInput')
rankField.send_keys('345')
# Click for storesList drop down
storeGroup = container.find_element_by_class_name('js-est-stores-list-input')
storeGroup.find_element_by_class_name('x-icon-caret-down').click()
# Get Stores List items
wait = WebDriverWait(browser2,3)
stores = wait.until(EC.visibility_of_element_located((By.CLASS_NAME,'js-est-stores-list')))
stores.find_elements_by_tag_name('span')[0].click()
# Wait for storesList is invisible
wait.until(EC.invisibility_of_element_located((By.CLASS_NAME,'js-est-stores-list')))
# Click for Categories list drop down
catGroup = container.find_element_by_class_name('js-est-categories-list-input')
catGroup.find_element_by_tag_name('input').click()
# Get Categories List items
cats = wait.until(EC.visibility_of_element_located((By.CLASS_NAME,'js-est-categories-list')))
# Get Categories List items
for cat in cats.find_elements_by_class_name('us-available'):
if (cat.find_element_by_tag_name('span').text == 'Electronics'):
cat.click()
break
# Wait for storesList is invisible
wait.until(EC.invisibility_of_element_located((By.CLASS_NAME,'js-est-categories-list')))
# wait5 = WebDriverWait(browser2,3)
submit = wait.until(EC.visibility_of_element_located((By.CLASS_NAME,'js-est-btn')))
submit.click()
browser2.implicitly_wait(5)
print(container.find_element_by_class_name('js-magic-result').text)
我期望得到的是最终值,但是得到的只是元素的中间值之一。
答案 0 :(得分:1)
代替
print(container.find_element_by_class_name('js-magic-result').text)
请尝试这个。
print(browser2.find_element_by_xpath("//table[@class='js-estimation-section']//tbody//tr/td[2]/p").text)
确保在打印之前应该有一些延迟,所以请仅替换打印代码。
让我知道是否可行。