任何等待一些javascript代码的waitForJs函数返回true

这是关于golang selenium webdriver 的问题。


是否有任何函数仅在某些 js 代码返回 true 后返回。


var session *webdriver.Session

...

session.waitForJs(`$('#redButton').css('color')=='red'`)

// next code should be executed only after `#redButton` becomes red

问题是该方法session.waitForJs不存在。


守候你守候我
浏览 311回答 1
1回答

慕的地10843

我在与 Selenium 的 golang 绑定中看不到任何等待函数,因此您很可能需要定义自己的等待函数。这是我第一次尝试 golang,所以请耐心等待:type elementCondition func(e WebElement) bool// Function returns once timeout has expired or the element condition is truefunc (e WebElement) WaitForCondition(fn elementCondition, int timeOut) {&nbsp; &nbsp; // Loop if the element condition is not true&nbsp; &nbsp; for i:= 0; !elementCondition(e) && i < timeOut; i++ {&nbsp; &nbsp; &nbsp; &nbsp; time.sleep(1000)&nbsp; &nbsp; }}有两个选项可以定义elementCondition. 您使用 Javascript 的方法看起来可以与webdriver.go 中ExecuteScript记录的函数一起使用// 将一段 JavaScript 代码注入页面,以便在当前选定框架的上下文中执行。假设执行的脚本是同步的,并且评估脚本的结果将返回给客户端。另一种方法是通过 Selenium 访问元素属性func ButtonIsRed(WebElement e) (bool) {&nbsp; &nbsp; return (e.GetCssProperty('color') == 'red')}所以你的代码会变成var session *webdriver.Session....// Locate the button with a css selectorvar webElement := session.FindElement(CSS_Selector, '#redButton')// Wait for the button to be redwebElement.WaitForCondition(ButtonIsRed, 10)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go