【问题标题】:Get get_attribute("value") after refresh the page刷新页面后获取get_attribute("value")
【发布时间】:2016-11-30 19:06:13
【问题描述】:

目前mu场景是这样的:

  1. 发送send_keys到字段
  2. 点击“保存”按钮(点击后刷新页面)
  3. 刷新页面后获取get_attribute("value")

我的代码:

    def fill_twitter(self):

        enter_twitter = "http://" + fake.text(max_nb_chars=13) + ".com"

        twitter_field = self.find_element(*ContractorsLocators.TWITTER)
        twitter_field.send_keys(enter_twitter)

        self.find_element(*ContractorsLocators.SAVE_BUTTON).click()
        time.sleep(4)

        assert twitter_field.get_attribute("value") == enter_twitter

我的错误:

StaleElementReferenceException: Message: stale element reference: element is not attached to the page document

如何获得get_attribute("value")

【问题讨论】:

  • 您需要再次找到与self.find_element(*ContractorsLocators.TWITTER).get_attribute("value").. 相同的元素以获得它们的值。

标签: python python-2.7 selenium selenium-webdriver


【解决方案1】:

StaleElementReferenceException:消息:过时的元素引用:元素未附加到页面文档

其中的most frequent cause 是元素所在的页面已刷新,或者用户已导航到另一个页面。

正如您所说,单击保存按钮时页面正在刷新。因此,为避免这种情况,您需要再次找到相同的元素(刷新元素)以获取它们的值,如下所示:-

assert self.find_element(*ContractorsLocators.TWITTER).get_attribute("value") == enter_twitter

【讨论】:

    【解决方案2】:

    页面刷新后,最好在元素获取Stale.之前保存属性值

    def fill_twitter(self):
    
        enter_twitter = "http://" + fake.text(max_nb_chars=13) + ".com"
    
        twitter_field = self.find_element(*ContractorsLocators.TWITTER)
        twitter_field.send_keys(enter_twitter)
        value = twitter_field.get_attribute("value")
    
        self.find_element(*ContractorsLocators.SAVE_BUTTON).click()
        time.sleep(4)
    
        assert value == enter_twitter
    

    【讨论】:

      【解决方案3】:

      要在页面刷新后检查元素是否可见,请使用显式 sleep() 函数,并在 4 秒后使用WebDriverWait 检查组件是否可见。

      element = WebDriverWait(driver, 10).until(
          EC.presence_of_element_located((By.ID, "myDynamicElement"));
      

      请访问http://selenium-python.readthedocs.io/waits.html#explicit-waits 以获得更好的理解。

      【讨论】:

        猜你喜欢
        • 2021-12-11
        • 1970-01-01
        • 2013-02-12
        • 2015-10-23
        • 1970-01-01
        • 1970-01-01
        • 2020-01-06
        • 2021-05-29
        • 1970-01-01
        相关资源
        最近更新 更多