如何将键发送到 Selenium-Java 中的搜索框元素中?

问题描述 投票:0回答:1

这是我用来发送密钥的方法,它位于我的父类中:

public void sendKeysFunction(WebElement element, String value) {
        waitUntilVisible(element);
        scrollTElement(element);
        element.clear();
        element.sendKeys(value); }

我就是这样称呼它的:

dc.sendKeysFunction(dc.BrandNameInput(),"bla bla");

我的定位器位于对话框内容类中,我创建了一个新对象作为 dc,因此我从对话框内容中调用我的元素以及父类中的方法。

它适用于常见元素,但有一个搜索框,可以在您键入 3 个字母时显示选项。您也可以手动输入所有文本。但我无法使用我的测试自动化框架向该元素发送密钥。它点击元素但不发送信件。我尝试使用不同的解决方案,例如 Keys.ENTER 但没有成功。我确信我的定位器。我该怎么办?

我希望能够将密钥发送到我的元素。

java selenium-webdriver testng automation-testing
1个回答
0
投票

首先检查或更改您尝试与之交互的元素标签。您可能必须与当前元素的祖先或后代或任何其他元素进行交互。如果您至少提供具有最接近元素和标签的元素结构示意图,那就更好了。

通常,有多种方法可以将文本设置到 Web 元素中 (

input
),除了
sendKeys()
调用之外。

  1. JavascriptExecutor 使用:
JavascriptExecutor jsExecutor = (JavascriptExecutor) getDriver();
jsExecutor.executeScript("arguments[0].value = arguments[1];", element, "YOUR TEXT");
  1. 例如,如果
    input
    标签具有
    value
    属性,您可以尝试设置该属性的值:
WebElement element = ...
String script = "arguments[0].setAttribute(arguments[1], arguments[2]);";
jsExecutor.executeScript(script, element, "value", "YOUR TEXT");
  1. 使用动作库:
Actions actions = new Actions(getWebDriver());
actions.sendKeys(element, "YOUR TEXT").perform();
© www.soinside.com 2019 - 2024. All rights reserved.