ruby - 如何修复“红宝石硒中的陈旧元素错误”
问题描述
尝试单击元素时,以下代码中出现过时元素错误row.find_element(:xpath, "//*[@id='batch']/div[1]/table/tbody/tr[#{index}]//td[5]/form/input[3]").click()
def traverse_batch
driver.find_elements(:xpath, "//*[@id='batch']/div[1]/table/tbody/tr").each.with_index(1) do |row, index|
row.find_elements(:xpath, "//*[@id='batch']/div[1]/table/tbody/tr[#{index}]/td").each do |td|
sleep(5)
if td.text() == 'started'
while td.text() == /^success/ do
driver.navigate.refresh()
end
end
if row.find_element(:xpath, "//*[@id='batch']/div[1]/table/tbody/tr[#{index}]//td[5]/form/input[3]").displayed?
row.find_element(:xpath, "//*[@id='batch']/div[1]/table/tbody/tr[#{index}]//td[5]/form/input[3]").click()
end
end
end
end
解决方案
这是您所采用的方法,而不是您正在使用的工具。
您正在查找元素列表,离开页面,然后尝试返回并使用先前找到的元素之一。
如果这确实是您需要采取的路线,并且您不关心表的结构在刷新时会发生变化,那么您可能只需收集所有内容的大小,并每次使用索引定位特定元素。
一般刷新时:#find_element --> good,#find_elements --> bad。
推荐阅读
- javascript - Jquery无限滚动仅适用于页面重新加载
- php - 尝试将 laravel lighthouse-php 与 Roadrunner Server 一起使用时遇到间歇性错误
- react-native - 未定义不是路由反应本机中的对象
- json - 如何更新循环计数器以匹配 JIRA 服务器上的 Json("issues") 数量?
- html - 将元素添加到示例网页
- c - .\Objects\Usart.axf: Error: L6218E: Undefined symbol HAL_NVIC_SetPriority(引用自stm32f4xx_hal.o)
- python - UnboundLocalError:分配前引用的局部变量“inf”
- python - ValueError:在DataFrame中创建列期间值的长度与索引的长度不匹配
- node.js - MongoError 抛出 '$addToSet' is empty 错误
- python - azure 上的 jupyterhub 无法设置或定位 jupyterhub_config.py