【问题标题】:Selenium wait for progress bar Python?Selenium等待进度条Python?
【发布时间】:2022-01-21 13:02:52
【问题描述】:

我仍然没有得到它,等待下一个代码的 selenium 进度条

<div data-v-a5395076="" class="progress">
<div data-v-a5395076="" role="progressbar" aria-valuenow="98.4" 
aria-valuemin="0" aria-valuemax="100" class="progress-bar progress-bar-striped active" 
style="width: 98.4%;">98.4%</div>

这就是我试图等到 100%
而且我无法获取文本或属性 我试图 get_attribute('aria-valuenow').text 但我认为不是这样。

while True:
            try:
                progress =  WebDriverWait(driver, 5).until(
                EC.presence_of_element_located((By.CSS_SELECTOR,".progress-bar.progress-bar-striped.active")))
                progressCondition =progress.get_attribute('aria-valuenow').text
                print(progressCondition)
                while True:
                    if progressCondition == '100':
                        break
                    else:
                        print(progress)
                        time.sleep(1)
                break
            except:
                print('Progress Not Found')
                time.sleep(1)
                timer += 1
                if timer > 30:
                    break
                else:
                    continue

怎么做?

【问题讨论】:

  • 我不熟悉 stackoverflow 我不知道我需要接受答案我会这样做的 thx 反正
  • 您不必这样做,但是 1) 这表明问题已解决 2) 这是对帮助您的人说“谢谢”的一种方式。这给你和帮助你的人都加分了。
  • 我明白了,先生,谢谢您让我知道! :^)

标签: python selenium webdriverwait expected-condition


【解决方案1】:

我想这会有所帮助:

  1. presence_of_element_located更改为visibility_of_element_located,因为presence_of_element_located在尚未完全呈现时返回Web元素,只是存在于页面上,但在visibility_of_element_located等待更成熟的元素状态时仍然不可见已经可见。
  2. progress.get_attribute('aria-valuenow').text 中删除.text
    get_attribute() 方法本身返回字符串值。而.text 从网络元素中提取文本。
    因此,您的代码可能如下所示:
progress =  WebDriverWait(driver, 5).until(EC.visibility_of_element_located((By.CSS_SELECTOR,".progress-bar.progress-bar-striped.active")))
progressCondition =progress.get_attribute('aria-valuenow')
print(progressCondition)

【讨论】:

  • 抱歉回复晚了!我只是等待它工作,它工作得很好!谢谢!祝你有美好的一天!
  • 没关系。您不必自动接受答案。如果它起作用 - 接受答案,否则让回答者知道它是否不起作用,出现了什么错误等。
【解决方案2】:

由于 innerText/innerHTML 最终会变成 100 而不是 presence_of_element_located() 你需要为 visibility_of_element_located() 诱导 WebDriverWait 并且你可以使用以下Locator Strategies:

  • 使用 xpathinnerText

    progress =  WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH,"//div[@role='progressbar' and text()='100%']")))
    
  • 使用 xpatharia-valuenow 属性:

    progress =  WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH,"//div[@role='progressbar' and @aria-valuenow='100%']")))
    

【讨论】:

    猜你喜欢
    • 2020-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-04
    • 2018-08-09
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多