首页 > 解决方案 > 无法使用 selenium 将值发送到输入框

问题描述

我正在尝试启动一个简单的应用程序并尝试将字符串发送到输入框。但是当我尝试这样做时,我没有得到这样的元素: Unable to locate element: method":"xpath","selector":"//input"}。但它是一个没有复杂结构的简单 DOM。有人可以帮我解决这个问题?

package selenium;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class SeleniumTest {
       public static void main(String[] args) {
            
            //Creating a driver object referencing WebDriver interface
            WebDriver driver;
            
            //Setting webdriver.gecko.driver property
            System.setProperty("webdriver.chrome.driver",  "E:\\chromedriver.exe");
            
            //Instantiating driver object and launching browser
            driver = new ChromeDriver();
            
            //Using get() method to open a webpage
            driver.get("https://todomvc.com/examples/angular2/");
            driver.findElement(By.xpath("//input")).sendKeys("amazon");
            //Closing the browser
            driver.quit();
     
        }
}


标签: seleniumselenium-webdriverautomated-testsselenium-chromedriver

解决方案


您可以尝试显式等待:

Selenium 客户端可以为命令式程序语言使用显式等待。它们允许您的代码暂停程序执行或冻结线程,直到您通过它的条件得到解决。条件以一定的频率被调用,直到等待超时。这意味着只要条件返回一个虚假值,它就会继续尝试和等待。

代码 :

driver.get("https://todomvc.com/examples/angular2/");
WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//input")));
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//input"))).sendKeys("Amazon");

在此处阅读有关显式等待的更多信息


推荐阅读