我使用selenium webdriver和java。
我遇到过一种情况,我可以找到&点击一个按钮,但此后没有任何反应。 所述按钮的HTML代码是>
<div id="divAllButtons" class="UCButtonMainCSS" style="display: none;">
<div>
<div id="OtherActionParent" class="mT8">
<div id="btnSave" class="btn fLt mR20">
<span>
<a onclick="Save_onclick()" href="javascript:void(0)">
<span id="Label24">Save</span>
</a>
</span>
</div>
单击时,按钮应重定向到确认页面,如果未填充mandetory字段,则显示警告消息。 我尝试过很少的东西,
1
Button = driver.findElement(By.id("btnSave"));
Button.click();
2
Button = driver.findElement(By.xpath("//div[@id='dataContainer']/div[2]/div/div/div[4]/div/div[1]/div[2]/span/a"));
Button.click();
第3
Actions action = new Actions(driver);
WebElement we = driver.findElement(By.xpath("//div[@id='dataContainer']/div[2]/div/div/div[4]/div/div[1]/div[2]/span/a"));
action.moveToElement(we).click().build().perform();
4
Point coordinates = driver.findElement(By.xpath("//div[@id='dataContainer']/div[2]/div/div/div[4]/div/div[1]/div[2]/span/a")).getLocation();
Robot robot = new Robot();
robot.mouseMove(coordinates.getX()+40,coordinates.getY()+30);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
在浏览器的底部显示消息 javascript:void(0)时,每种方式都可以正常工作以点击按钮。
答案 0 :(得分:1)
尝试基于文本的xpath搜索
基于文本的xpath为我解决了很多问题。您只需确保在单击元素
之前有足够的等待时间编辑:尝试使用操作
By saveButton = By.xpath("//*[.='Save']");
WebElement element = driver.findElement(saveButton);
Actions action = new Actions(driver);
action.moveToElement(element).build().perform();
driver.findElement(saveButton).click();
注意:用java编写的未经测试的代码
答案 1 :(得分:1)
尝试使用此代码点击保存按钮,看看它是否有效:
WebElement Button = driver.findElement(By.xpath("//div[@id='btnSave]//a"));
Button.click();
OR
WebElement Button = driver.findElement(By.xpath("//div[@id='btnSave]//span[.='Save']"));
Button.click();
答案 2 :(得分:1)
试试javascript执行者。它可能会起作用....
WebElement save = driver.findElement(By.id("btnSave"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", save);
答案 3 :(得分:0)
问题解决了。 问题不在于找到元素,而是onClick()事件没有被触发。然后我发现还有其他东西从事件中停止了。我曾使用java脚本启用日期选择器框&amp;这样做了,
((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();
}
}
我终于以正常方式使用了日期选择器&amp;事件顺利开始。
谢谢你们的帮助。 .cheers !!!