目前mu情况如此:
send_keys
发送到字段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")
?
答案 0 :(得分:2)
StaleElementReferenceException:消息:陈旧元素引用:元素未附加到页面文档
此most frequent cause是该元素所属的页面已刷新,或者用户已导航到另一页面。
正如您所说,单击“保存”按钮时页面会刷新。因此,要避免这种情况,您需要再次找到相同的元素(刷新元素)以获取其值,如下所示: -
assert self.find_element(*ContractorsLocators.TWITTER).get_attribute("value") == enter_twitter
答案 1 :(得分:0)
随着页面刷新,您最好在元素获取之前保存属性的值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
答案 2 :(得分:0)
要在刷新页面后检查元素是否可见,请使用显式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以便更好地理解。