1

我正在使用带有 Java 的 Web 驱动程序 2.31。Web 驱动程序似乎无法对具有onclick()属性的输入元素执行单击操作。

我需要对其执行点击操作的输入元素具有以下属性 - id(这是一个随机生成的数字)、classtype=buttononclickonmouseoutonmouseover和。 titlevalue

我能够获取的值titlevalue属性,这意味着网络驱动程序能够识别输入元素,但不能对其执行点击操作。

我尝试过以下方法:

  1. webdriver.findElement(By.xpath("xpath for the input")).click()
  2. webdriver.findElement(By.xpath("xpath for the input")).sendKeys(Keys.ENTER);
  3. new Actions(webdriver).moveToElement(webdriver.findElement(By.xpath("xpath for the input"))).click().perform();

以上选项均无效。

4

2 回答 2

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();
  }

}

我终于以正常方式使用了日期选择器,并且事件顺利触发。

我希望这个答案会有所帮助。. 干杯 !!!

于 2014-12-12T06:08:59.573 回答
0

您是否从 element.click() 中得到任何异常?它启用并可见吗?我们遇到的问题之一是 WebDriver 没有正确处理 position:static 元素,因此在播放过程中它会覆盖按钮(并且您不会在屏幕截图上看到它)并且会抛出异常“元素在点不可点击”。

我们在元素方面遇到了类似的问题,并且有以下代码有时确实有效(但也不是 100% 的时间):

element.click();
if("button".equals(tagName)) {
    if(element.isEnabled() && element.isDisplayed())
        element.sendKeys(Keys.ENTER);
}

但是在升级 WebDriver 之后问题就消失了,我们删除了 sendKeys(ENTER),它在 2.29.0 中也可以正常工作。

于 2013-03-27T17:56:45.573 回答