我有一个包含16行和5列HTML表的页面。 我有一个循环表格并打印出单元格值的方法。 我收到以下错误:
raise exception_class(message, screen, stacktrace)
StaleElementReferenceException: Message: Element is no longer valid
错误发生在这一行:
col_name = row.find_elements(By.TAG_NAME, "td")[1] # This is the Name column
我的方法代码是:
def get_variables_col_values(self):
try:
table_id = self.driver.find_element(By.ID, 'data_configuration_variables_ct_fields_body1')
#time.sleep(10)
rows = table_id.find_elements(By.TAG_NAME, "tr")
print "Rows length"
print len(rows)
for row in rows:
# Get the columns
print "cols length"
print len(row.find_elements(By.TAG_NAME, "td"))
col_name = row.find_elements(By.TAG_NAME, "td")[1] # This is the Name column print "col_name.text = "
print col_name.text
except NoSuchElementException, e:
return False
我得到的元素不再有效,因为dom已更新,已更改? 该表尚未完成加载? 我该怎么解决这个问题? 我是否需要等待页面完全加载,完成?
我应该使用以下WebdriverWait代码来等待页面加载完成吗?
WebDriverWait(self.driver, 10).until(lambda d: d.execute_script('return document.readyState') == 'complete')
如果需要,我的代码应该放在哪一行?
我再次运行我的代码,第二次运行。输出是:
Rows length
16
cols length
6
col_name.text =
Name
cols length
6
col_name.text =
Address
cols length
6
col_name.text =
DOB
...
所以我需要让我的代码更好,所以每次运行我的测试用例时它都能正常工作。 什么是最好的解决方案?
谢谢, 里亚兹