我是Ruby和Selenium的新手,我以为我已经改用框架来定位包中的某个元素,但看起来好像不是。
运行脚本时,出现以下错误:
Selenium::WebDriver::Error::NoSuchFrameError: Unable to locate frame: 1
or
Selenium::WebDriver::Error::StaleElementReferenceError
但是html中存在一个iframe,该iframe围绕着我要查找的元素。我使用Selenium记录器更好地弄清楚了这是哪一帧,它告诉我索引是1。我尝试通过其ID定位该帧,但无法找到它。然后,我尝试等待20-60秒,以期以某种方式起作用。只是超时。
在其他时间切换帧和现在之间,我可以看到的唯一区别是我现在正在寻找的帧在一个循环内。会影响吗?任何帮助表示赞赏!
这是我的代码:
select_list.options.each { |option|
if option.text == ""
@driver.find_element(xpath: '//*[@id="txt_source"]/option[2]').click
@driver.find_element(xpath: '//*[@id="search_button"]/button[2]').click #small arrow
sleep(10)
@driver.find_element(xpath: '//*[@id="search_button"]/div/a[3]').click #Button that navigates to the next page
sleep(10)
@driver.find_element(xpath: '//*[@id="main_action"]').click
@driver.switch_to.frame(1) #Where is fails
@driver.find_element(xpath: '/html/body/table/tbody/tr[2]/td/table/tbody/tr[2]/td/input').click
@driver.switch_to.default_content
end
}
答案 0 :(得分:0)
如果作为循环的一部分切换到框架,则需要切换回该框架,否则循环的第二次迭代将无法进行。
eq_refl