当前位置: 首页 > 知识库问答 >
问题:

当没有可用的提交按钮时,向表单字段发送键的问题

娄嘉石
2023-03-14

我正在为一个学校项目研究Selenium WebDriver。我目前正在创建一个Maven Web应用程序(使用jsp/servlets),该应用程序将tripadvisor数据进行Web剪切,将其放入数据库,然后根据用户过去的行为对数据进行排序。

当我不得不将我的钥匙提交到tripadvisor搜索栏时,我的问题就开始了。没有提交按钮,所以我必须使用org.openqa.selenium.keys导入。下面是我尝试的代码:

driver.findElement(By.xpath("//span[contains(@class, 'brand-trip-search-geopill-TripSearchGeoPill__icon--jEoJX')]")).click();

String keyword = request.getParameter("<parameter-inserted-by-user>");
//insert text inside search form
WebElement insert_element = driver.findElement(By.xpath("//input[@class='input-text-input-ManagedTextInput__managedInput--106PS']"));

insert_element.sendKeys(keyword+Keys.ENTER);

出现的问题是,当我运行测试时,文本被插入到搜索表单中,但当keys.enter发生时,搜索不会提交,它注册时就像我实际上写了:

insert_element.sendKeys(Keys.ENTER);

我一直潜伏在stackoverflow周围寻找解决方案,我尝试了以下替代方案:

insert_element.sendKeys(keyword + "\n");

无济于事。它只注册“Enter”命令,从而为我提供“附近”位置的搜索。

我也看到我可以使用javascript,但对于提交搜索请求这样一个简单的任务来说,它看起来很累赘。

目前我使用的是Chromedriver V.2.44和Selenium V.3.141.59

有人能帮帮我吗?提前感谢您抽出时间。

共有1个答案

董畅
2023-03-14

你遇到了时间问题。Selenium打字非常快,然后按回车键。手动执行这些操作,您将看到在键入和根据键入的内容获取结果之间有轻微的延迟。

我有样例代码证明了上面的内容,但我把这个留给你去弄清楚。上面的注释和你的代码应该足够了。

----编辑----添加示例代码,因为OP已经搞清楚了

driver.findElement(By.xpath("//span[contains(@class, 'brand-trip-search-geopill-TripSearchGeoPill__icon--jEoJX')]")).click();

String keyword = request.getParameter("<parameter-inserted-by-user>");
//insert text inside search form
WebElement insert_element = driver.findElement(By.xpath("//input[@class='input-text-input-ManagedTextInput__managedInput--106PS']"));

insert_element.sendKeys(keyword);
Thread.sleep(1000);    //  <-- Not ideal but for a permanent solution, but illustrates this is timing related.
insert_element.sendKeys(Keys.ENTER);
 类似资料:
  • 问题内容: 如何仅在文本输入字段上使用Enter键提交表单,而不必添加提交按钮? 我记得以前曾经这样做过,但是现在我对其进行了测试,除非表单中有一个Submit-type输入字段,否则表单不会提交。 问题答案: $(“input”).keypress(function(event) { if (event.which == 13) { event.preventDefault(); $(“form

  • 问题内容: 我有一个名称列表和一些带有产品名称的按钮。当单击其中一个按钮时,列表信息将发送到PHP脚本,但是我无法点击“提交”按钮来发送其值。怎么做?我将代码简化为以下内容: 发送页面: 接收页面:buy.php 除了发送提交按钮值外,其他所有东西都可以正常工作。 问题答案: 按钮名称未提交,因此未设置php 值。如in 评估为false。

  • 问题内容: 好吧,我试图通过按Enter提交表单,但不显示提交按钮。我不希望尽可能地使用JavaScript,因为我希望所有功能都可以在所有浏览器上正常工作(我知道的唯一JS方式就是使用事件)。 现在,表单如下所示: 哪个效果很好。当用户按下Enter键时,提交按钮将起作用,并且该按钮在Firefox,IE,Safari,Opera和Chrome中不显示。但是,我仍然不喜欢该解决方案,因为很难知道

  • 问题内容: 我有这样的表格: 如您所见,如果输入为空,则该按钮将被禁用,但是当包含文本时,该按钮不会变回启用状态。我该如何运作? 问题答案: 您需要使用表单名称以及ng-disabled:这是Plunker上的演示

  • 所以我刚刚创建了一个wp网站,现在我的问题是联系表单7提交按钮不发送表单。这是我的代码,我不知道我把它搞错了什么地方。

  • 问题内容: 单击后,我编写了以下代码以禁用网站上的提交按钮: 不幸的是,它没有发送表格。我怎样才能解决这个问题? 编辑 我想绑定提交,而不是表格:) 问题答案: 做到: 发生的事情是您实际上在完全触发该提交事件之前禁用了该按钮。 您可能还应该考虑使用ID或CLASS来命名元素,因此不要在页面上选择所有提交类型的输入。 (请注意,我使用,因此该表单在示例中并未实际提交;请在使用时将其保留。)