Selenium webdriver geb测试单击并拖动滑块时出现问题
一般来说,geb和自动化测试是新的。我在自动单击和拖动页面上的元素方面遇到了问题。我通读了geb的书,发现了Action类,并编写了一些非常程序化的代码来测试它。我可能误解了action类的操作方式,因为它似乎没有执行任务。它编译时没有问题,测试仍然运行,没有抛出任何错误。我试图拖动的web元素确实存在,我确信它是正确的Selenium webdriver geb测试单击并拖动滑块时出现问题,selenium-webdriver,geb,Selenium Webdriver,Geb,一般来说,geb和自动化测试是新的。我在自动单击和拖动页面上的元素方面遇到了问题。我通读了geb的书,发现了Action类,并编写了一些非常程序化的代码来测试它。我可能误解了action类的操作方式,因为它似乎没有执行任务。它编译时没有问题,测试仍然运行,没有抛出任何错误。我试图拖动的web元素确实存在,我确信它是正确的 <div id="enquireForm:j_id_t_3_1_u:sliderframe" class="ets-nicecaptcha-slider ets-nice
<div id="enquireForm:j_id_t_3_1_u:sliderframe" class="ets-nicecaptcha-slider ets-nicecaptcha-button-style ui-button-gradient">
<span id="enquireForm:j_id_t_3_1_u:slidedrop" class="ets-nicecaptcha-drop ets-nicecaptcha-button-style ui-droppable">
</span>
<div id="enquireForm:j_id_t_3_1_u:sliderbutton" class="ets-nicecaptcha-slider-button ets-nicecaptcha-button-style ui-draggable ui-draggable-handle" style="position: relative;">
</div>
</div>
void slideToSubmit(){
WebElement slider = driver.findElement(By.className("ets-nicecaptcha-slider-button"))
Actions action = new Actions(driver)
action.perform()
action = action.clickAndHold(slider)
action.perform()
action = action.moveByOffset(500,0)
action.perform()
action = action.release(slider)
action.perform()
}
作废幻灯片提交(){
WebElement slider=driver.findElement(按.className(“验证码滑块按钮”))
动作动作=新动作(驱动程序)
action.perform()
动作=动作。单击并按住(滑块)
action.perform()
action=action.moveByOffset(500,0)
action.perform()
动作=动作。释放(滑块)
action.perform()
}
类名中的空格可能是问题所在。试一试
WebElement slider = driver.findElement(By.cssSelector("div[class='ets-nicecaptcha-slider-button ets-nicecaptcha-button-style ui-draggable ui-draggable-handle']"))
或者不使用By
class直接尝试
def browser = new Browser(driver: new FirefoxDriver()) // or whichever driver you use
browser.go "www.url.com"
browser.$("div.ets-nicecaptcha-slider-button.ets-nicecaptcha-button-style.ui-draggable.ui-draggable-handle")
如果您使用的是Geb,那么您应该使用,它可以大大简化以下内容:
interact {
clickAndHold($(".ets-nicecaptcha-slider-button"))
moveByOffset(500,0)
release()
}