【问题标题】:Selenium chrome Keys.ENTER not working on 'title-input'Selenium chrome Keys.ENTER 不适用于“标题输入”
【发布时间】:2018-02-25 12:29:23
【问题描述】:

我在使用 selenium 发送 ENTER 键时遇到问题。我尝试了多种方法,但似乎没有一种方法有效。

元素代码:

<span _ngcontent -c10>elementName</span>

选择元素后,元素变为

 <input _ngcontent -c10 class="title-input" type="text">

-我已经确定我有正确的元素。

-每当有“RETURN”时,我也尝试使用“ENTER”。

我尝试过的事情:

--1--

textBox.click();
textBox.sendKeys(Keys.RETURN);

--2--

Actions actions = new Actions(driver);
actions.click(textBox);
actions.sendKeys(textBox, Keys.RETURN);

--3--

driver.getKeyBoard().pressKey(Keys.RETURN);
Thread.sleep(100);
driver.getKeyBoard().releaseKey(Keys.RETURN);

--4--

Robot r = new Robot();
textBox.click();
r.keyPress(KeyEvent.VK_ENTER);
Thread.sleep(100);
r.keyRelease(KeyEvent.VK_ENTER);

感谢任何帮助!谢谢!

按照 DebanjanB 的要求提供更多的 outerHTML:

<div _ngcontent-c6 class="tab clicked" style="width: 50%;">
  <tab-header _ngcontent-c6 _nghost-c10>
    <span _ngcontent-c10 class="tab-header-name">
      <!---->
      <input _ngcontent-c10 class="title-input" type="text"> == $0
      <!---->
    </span>
    <!---->
    <span _ngcontent -c10 id="delete-tab" class="can-delete">x</span>
    <!---->
    <!---->
    <img _ngcontent-c10 id="not-pin-tab" src="assets/images/notPin.png">
  <tab-header>
</div>

【问题讨论】:

  • 一旦元素更改为&lt;input _ngcontent -c10 class="title-input" type="text"&gt;,为什么当它是type="text"时你只想发送Keys.RETURN
  • 保存我的输入,因为我改变了它
  • 哪个输入?您是否删除了中间的一些步骤?我认为_ngcontent-c10 会注意保存您的输入。你只需要focusout
  • 恐怕它没有..还有其他想法吗?目前保存它的唯一方法是单击 Enter。由于我只开发自动化功能,因此我发布了使用 F12 发现的内容
  • 你能用更多的 outerHTML 更新问题来确认元素是否在表单中吗?

标签: java angularjs selenium selenium-webdriver selenium-chromedriver


【解决方案1】:

正如您提到的 Keys.RETURN 在这里不起作用,有一些替代方案:

  • 由于 WebElement 是一个 Angular 元素,您必须为 element to be clickable 引入 WebDriverWait,如下所示:

    WebElement my_element = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(textBox));
    
  • 接下来您可以尝试click() 并发送Keys.RETURN,如下所示:

    my_element.click()
    my_element.sendKeys(Keys.RETURN);
    
  • 您也可以尝试Keys.Enter 作为替代方案,如下所示:

    my_element.click()
    my_element.sendKeys(Keys.ENTER); 
    

    您可以在What is the best practice to simulate an ENTER or RETURN using Selenium WebDriver找到详细讨论

  • 如果 WebElement&lt;form&gt; 标记中,您也可以尝试调用 submit(),如下所示:

    my_element.click()
    my_element.submit();
    

【讨论】:

  • 我好像没有ExpectedConditions类,你还有什么建议吗?我在同一路径下确实有“ExpectedCondition ”。谢谢!
  • 添加导入,应该很简单。
  • 我在一个独立的网络上工作,导入课程将是一个漫长的过程,可能需要长达 72 小时,这就是为什么我问你是否有任何其他建议 :)
  • 谢谢,这让我疯狂了好几个小时。和op有同样的问题。这个解决方案效果最好!
猜你喜欢
  • 2023-01-14
  • 2017-03-19
  • 2017-06-19
  • 1970-01-01
  • 1970-01-01
  • 2013-05-14
  • 1970-01-01
  • 2013-07-14
  • 2019-08-02
相关资源
最近更新 更多