selenium - 无法使用 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();
}
}
解决方案
您可以尝试显式等待:
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");
在此处阅读有关显式等待的更多信息
推荐阅读
- python - Boost Python的vector_indexing_suite似乎打破了return_internal_reference的使用。我错过了什么吗?
- date - 这次出乎意料
- mysql - Mysql选择具有多个where条件的随机行
- javascript - 用 k6 对“http_req_duration”的偏差进行阈值化?
- c# - 为什么我在将类型 double 隐式转换为 int 时出现错误?
- html - 我正在尝试建立一个倒数计时器。当移动切换打开时,宽度更新将页脚向下推
- python-3.x - 在 SpaCy 中创建自定义组件
- python - 在屏幕上显示文本的好模块
- java - 使用 AND/OR 组合的 Elasticsearch Java 查询
- python - 如何找到要在项目中使用的标头?