单击<input />类型(selenium)导致问题

时间:2017-09-18 11:15:25

标签: java selenium

这是一个奇怪的(对我来说),我无法理解。

我有一个应用程序,我使用Selenium IDE记录了一个基本测试并将其导出并尝试使代码更加健壮。我对这个元素有疑问:

<input class=" " id="P400_ADD_MEDIUM_BUT" onclick="void(0);" type="button" value="Add Emission">

它应该相当简单,它有一个id所以最初我以为我会用它来定位元素并点击它:

driver.findElement(By.id("P400_ADD_MEDIUM_BUT")).click();

当我观看测试运行时,按钮突出显示为蓝色(此应用程序有两级蓝色,鼠标按钮关闭时为深蓝色,鼠标释放时为浅蓝色) - 我看到的颜色为浅蓝色 - 但是没有任何反应(应该出现一个弹出窗口。)

我尝试将此更改为XPath并使用以下内容: //输入[@ ID = 'P400_ADD_MEDIUM_BUT']

  

driver.findElement(By.xpath( “//输入[@ ID = 'P400_ADD_MEDIUM_BUT']”))点击();

但结果仍然相同。 我在IDE中播放了录制的脚本,这很好用。我应该提一下,测试必须在IE中运行(它是一个内部应用程序,IE是内部使用的唯一浏览器) - 但我很难过。

IE是11,最新的selenium和IE驱动程序。

有人有什么想法吗?

1 个答案:

答案 0 :(得分:0)

请尝试以下任何代码。

注意: - 在点击此按钮之前,请提供几秒钟的等待,以便您的驱动程序可以找到该元素。

等待我使用Explicit Wait方法。

new WebDriverWait(driver, 60).until(ExpectedConditions.elementToBeClickable(driver.findElement(By.xpath("//input[@type='button'][@value='Add Emission']"))));   //Wait for 60 seconds.
driver.findElement(By.xpath("//input[@type='button'][@value='Add Emission']")).click();
  

OR

尝试使用Javascript Executor方法点击按钮。

WebElement button = driver.findElement(By.xpath("//input[@type='button'][@value='Add Emission']"));
((JavascriptExecutor) driver).executeScript("arguments[0].click();", button);