1 回答
TA贡献1785条经验 获得超8个赞
我在与 Selenium 的 golang 绑定中看不到任何等待函数,因此您很可能需要定义自己的等待函数。这是我第一次尝试 golang,所以请耐心等待:
type elementCondition func(e WebElement) bool
// Function returns once timeout has expired or the element condition is true
func (e WebElement) WaitForCondition(fn elementCondition, int timeOut) {
// Loop if the element condition is not true
for i:= 0; !elementCondition(e) && i < timeOut; i++ {
time.sleep(1000)
}
}
有两个选项可以定义elementCondition. 您使用 Javascript 的方法看起来可以与webdriver.go 中ExecuteScript记录的函数一起使用
// 将一段 JavaScript 代码注入页面,以便在当前选定框架的上下文中执行。假设执行的脚本是同步的,并且评估脚本的结果将返回给客户端。
另一种方法是通过 Selenium 访问元素属性
func ButtonIsRed(WebElement e) (bool) {
return (e.GetCssProperty('color') == 'red')
}
所以你的代码会变成
var session *webdriver.Session
....
// Locate the button with a css selector
var webElement := session.FindElement(CSS_Selector, '#redButton')
// Wait for the button to be red
webElement.WaitForCondition(ButtonIsRed, 10)
- 1 回答
- 0 关注
- 310 浏览
添加回答
举报