【问题标题】:Selenium WebDriver Java Maven input date with sendkeys isn't working带有 sendkeys 的 Selenium WebDriver Java Maven 输入日期不起作用
【发布时间】:2015-08-19 16:09:42
【问题描述】:

我正在尝试将日期输入到具有日历插件的日期字段中,就像每个预订网站都有一样。这是我的代码:

WebElement checkIn = driver.findElement(By.id("check-in"));
checkIn.sendKeys("08/31/15");       
WebElement checkOut = driver.findElement(By.id("check-out"));
checkOut.sendKeys("09/06/15");

这不是我运行脚本时输入的日期。日期格式正确。我究竟做错了什么?我该如何解决这个问题?

【问题讨论】:

  • 你能手动输入这个值吗(通过输入,不用鼠标)?
  • 我不认为您可以共享该页面的链接?你能把文本放在页面上的其他控件中吗?这些控件是在 IFRAME 还是什么的?
  • 例如:hotels.com.

标签: java maven selenium selenium-webdriver webdriver


【解决方案1】:

您可能想尝试的一件事是通过您的 WebDriver 实例运行 JavaScript sn-p 以更改输入的值。像这样的:

((JavascriptExecutor) driver).executeScript("$('#check-in').prop('value', '08/31/15');");

【讨论】:

  • 但这实际上并没有测试它是否有效。从用户的角度来看,我不会在控制台中输入它来强制属性。我将与页面进行交互。
  • 确实如此。您不会测试输入是否正常工作,但您仍然可以根据该输入测试系统的行为。
  • 绝对是一个解决方案,这就是我不反对的原因,但对于 OP 的教化,这绕过了用户实际所做的事情。
  • 我对自动化脚本很陌生,所以我不熟悉您的解决方案。我尝试将您的代码粘贴到我的上方,错误是:JavascriptExecutor 无法解析为类型。有什么想法吗?
  • 你导入了吗? import org.openqa.selenium.JavascriptExecutor;
【解决方案2】:

所以我想出了如何解决我的具体问题,方法是在各处添加一些 Thread.sleep(3000)。我正在测试的日历插件会在您输入入住日期后自动填写退房日期。因此,当我的脚本发送签出日期时,它只是将其添加到自动日期的末尾。显然插件不理解这一点,只是将日期设置为当前日期和第二天。解决方案是在写入所需日期之前清除退房日期。

我现在的代码:

WebElement checkIn = driver.findElement(By.id("qf-0q-localised-check-in"));
checkIn.sendKeys("08/30/15");
WebElement checkOut = driver.findElement(By.id("qf-0q-localised-check-out"));
checkOut.clear();
checkOut.sendKeys("09/06/15");

【讨论】:

    猜你喜欢
    • 2012-09-07
    • 2021-11-21
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    • 2013-09-25
    • 2013-09-30
    • 2014-10-24
    • 1970-01-01
    相关资源
    最近更新 更多