我正在使用带有Java的Web驱动程序2.31。似乎Web驱动程序无法对具有onclick()
属性的输入元素执行单击操作。
我需要执行点击操作的输入元素具有以下属性 - id
(随机生成的数字),class
,type=button
,onclick
,onmouseout
,onmouseover
,title
和value
。
我可以获取title
和value
属性的值,这意味着Web驱动程序能够识别输入元素,但无法对其执行单击操作。
我尝试了以下内容:
webdriver.findElement(By.xpath("xpath for the input")).click()
webdriver.findElement(By.xpath("xpath for the input")).sendKeys(Keys.ENTER);
new Actions(webdriver).moveToElement(webdriver.findElement(By.xpath("xpath for the input"))).click().perform();
以上选项均无效。
答案 0 :(得分:0)
你是否从element.click()得到任何例外?它启用并可见?我们遇到的问题之一是WebDriver没有正确处理位置:静态元素,所以在播放期间它会覆盖按钮(你不会在屏幕截图上看到它)并且会抛出异常“元素在点上无法点击”
我们遇到了与元素类似的问题,并且有下面的代码有时会工作(但也不是100%):
element.click();
if("button".equals(tagName)) {
if(element.isEnabled() && element.isDisplayed())
element.sendKeys(Keys.ENTER);
}
但是在升级WebDriver之后问题就消失了,我们删除了sendKeys(ENTER),它在2.29.0中运行良好。
答案 1 :(得分:0)
我在项目中遇到了完全相同的问题。 问题不是找到元素,而是onClick()事件没有触发。 然后我发现其他东西在那里停止了事件发生。我曾使用java脚本启用日期选择器框&这样做了,
((JavascriptExecutor)driver).executeScript ("document.getElementById('txtOriginDate').removeAttribute('readonly',0);");
WebElement originDateBox= driver.findElement(By.xpath(prop.getProperty("originDateBox")));
originDateBox.clear();
originDateBox.sendKeys("9-Dec-2014"); //Enter date
开发人员以这样的方式设计它:如果您不使用日期选择器来选择日期,则不会设置特定变量。 最终使** onclick 事件无法解雇。
日期选择器代码是这样的,
var jsoncustdate = "";
var jsonorigindate = "";
function onSelectCalender( StrDt, obj )
{
if ( !varReadonly ) {
if ( $( "#txtCustDescisionDate" ).attr( "IsDisable" ) == "FALSE" )
{
if ( obj.id == "txtCustDescisionDate" )
{
custobjDt = new Date( obj.selectedYear, obj.selectedMonth,obj.selectedDay, 0, 0, 0, 0 );
jsoncustdate = custobjDt.getTime();
jsoncustdate = "\/Date(" + jsoncustdate + ")\/";
DisabledBtnStage();
// $("#txtFromDate").datepicker("option", "maxDate", objDt);
}
if ( obj.id == "txtOriginDate" )
{
var objDt = new Date( obj.selectedYear, obj.selectedMonth,obj.selectedDay,0, 0,0,0 );
jsonorigindate = objDt.getTime();
jsonorigindate = "\/Date(" + jsonorigindate + ")\/";
DisabledBtnStage();
// $("#txtToDate").datepicker("option", "minDate", objDt);
}
}
elogCommon.CheckMandatory();
}
}
我终于以正常方式使用了日期选择器&事件顺利开始。
我希望这个答案会有所帮助。 .cheers !!!