【问题标题】:Selenium webdriverwait (.text_to_be_present _in_element doesnt) seem to work and I can't find any solution to thisSelenium webdriverwait(.text_to_be_present_in_element 没有)似乎工作,我找不到任何解决方案
【发布时间】:2021-04-03 09:34:10
【问题描述】:

下面是我从网上抓取的完整的 html 元素

<div data-v-a27cb890="" class="text-2xl font-bold font-numeric">19.60</div>

如您所见,我正在选择一个 20 秒倒计时 html 计时器代码, 这里的问题是我在下面编写的代码似乎不起作用。当计时器达到 15.28 秒时。我想打印出来。

timer = WebDriverWait(driver, 30).until(EC.text_to_be_present_in_element(By.XPATH, '//*[@id="page-scroll"]/div[1]/div/div/div[3]/div[3]/div/div[2]'), "15.28")
print(float(timer.text))

在 WebDriverWaiting 30 秒后,即使计时器在我的屏幕上滚动过去,它也找不到我想要打印的文本。然后它给出一个 TimeoutException 错误。

【问题讨论】:

    标签: python selenium selenium-webdriver webdriverwait expected-condition


    【解决方案1】:

    根据selenium.webdriver.support.wait doc,默认轮询间隔为0.5s。所以它可能不符合你的期望,可以捕捉到 15.28s。尝试自定义您自己的间隔:

    WebDriverWait webDriverWait = new WebDriverWait(driver, 30);
    webDriverWait.pollingEvery(Duration.ofMillis(50)); // 50 milliseconds
    

    【讨论】:

      【解决方案2】:

      根据定义,text_to_be_present_in_element() 应该在 tuple 中调用,因为它不是一个函数,而是一个,初始化程序只期望 1隐式self参数:

      class text_to_be_present_in_element(object):
          """ An expectation for checking if the given text is present in the
          specified element.
          locator, text
          """
          def __init__(self, locator, text_):
          self.locator = locator
          self.text = text_
      
          def __call__(self, driver):
          try:
              element_text = _find_element(driver, self.locator).text
              return self.text in element_text
          except StaleElementReferenceException:
              return False
      

      所以而不是:

      timer = WebDriverWait(driver, 30).until(EC.text_to_be_present_in_element(By.XPATH, '//*[@id="page-scroll"]/div[1]/div/div/div[3]/div[3]/div/div[2]'), "15.28")
      

      您需要(添加额外的括号):

      timer = WebDriverWait(driver, 30).until(EC.text_to_be_present_in_element((By.XPATH, '//*[@id="page-scroll"]/div[1]/div/div/div[3]/div[3]/div/div[2]'), "15.28"))
      

      参考文献

      您可以在以下位置找到一些相关的详细讨论:

      【讨论】:

        猜你喜欢
        • 2021-11-19
        • 1970-01-01
        • 2021-07-21
        • 2020-06-07
        • 1970-01-01
        • 1970-01-01
        • 2015-01-06
        • 1970-01-01
        • 2020-05-30
        相关资源
        最近更新 更多