我正在测试一个包含多种形式的网页。
当我使用
client.frame({id:client.element('#frameId')});
我没有收到任何错误,但是当我尝试与该框架内的元素交互时,我得到一个RuntimeError告诉我无法找到该元素。
我一直在寻找有关该frame()
方法如何工作的文献,但我没有任何运气。
我正在测试一个包含多种形式的网页。
当我使用
client.frame({id:client.element('#frameId')});
我没有收到任何错误,但是当我尝试与该框架内的元素交互时,我得到一个RuntimeError告诉我无法找到该元素。
我一直在寻找有关该frame()
方法如何工作的文献,但我没有任何运气。
我也在使用 webdriver.io,看起来文档有点错误。
您可以访问框架:
1)通过页面上的数字。例如,在 HTML DOM 中遇到的第一帧是
client.frame(0)
, secondclient.frame(1)
等
2)通过名称属性:
<frame name="test"></frame>
client.frame('test')
3) 找到带有 的元素client.element('css_selector')
,然后在回调中将返回的值传递给.frame()
进入新框架的方法是:
client.frame(<id of frame here>)
不过,您所拥有的也应该起作用。尝试client.waitForExist
对仅存在于框架上的元素执行 a 操作,而不是仅仅切换到框架并立即尝试与该框架中的元素进行交互,因为您可能在 selenium 有机会完全切换到框架之前触发交互事件:
client.frame(<id of frame here>
client.waitForExist(<id of some css element that only exists in the frame>)
client.frame(<name_of_frame>)
工作。
我尝试使用类似的选择器,#idOfSelector
但它似乎不起作用。
这对我有用
const frameValue = browser.element('frame_selector').value;
browser.frame(frameValue);
希望它对你有用。