如何删除文本字段中的默认值并使用 Selenium WebDriver 键入新值
How to delete the default value in a text field and type a new value using Selenium WebDriver
在我的应用程序中,我必须在文本字段中键入一些值。此文本字段包含一些默认值,因此首先我需要删除该值,然后键入新值,但既不能删除此值,也不能键入新类型新值。任何帮助将不胜感激。我尝试了以下代码:
WebElement samount=d1.findElement(By.id("ctl00_ContentPlaceHolder1_txtAmt"));
System.out.println(samount);
samount.clear();
samount.sendKeys("100");
我也试过这个:
WebElement searchField=d1.findElement(By.id("ctl00_ContentPlaceHolder1_txtAmt"));
System.out.println(searchField);
searchField.click();
searchField.clear();
searchField.sendKeys(Keys.BACK_SPACE );
searchField.sendKeys(Keys.chord(Keys.CONTROL, "a"));
searchField.sendKeys(Keys.DELETE);
searchField.sendKeys("100");
searchField.click();
以下是我页面的 HTML:
<table cellspacing="6" cellpadding="6" style="width: 100%;">
<tbody>
<tr>
<tr>
<td style="text-align: center;" colspan="2">
<br>
<table width="100%" style="text-align: center;">
<tbody>
<tr>
<tr>
<td id="ctl00_ContentPlaceHolder1_tdFirst" style="width:35%;"> </td>
<td style="text-align: right;">
<td style="text-align: left;">
<input id="ctl00_ContentPlaceHolder1_txtAmt" class="txtAlpha" type="text" style="width:100px;" onblur="checkSender();" onkeypress="if (WebForm_TextBoxKeyHandler(event) == false) return false;AmountOnly();" onchange="javascript:setTimeout('__doPostBack (''ctl00$ContentPlaceHolder1$txtSenderAmt'','' '')', 0)" maxlength="10" value="0.00" name="ctl00$ContentPlaceHolder1$txtSenderAmt">
你的代码看起来不错 - 我最近为一个 ASP.Net 应用程序编写了一个Selenium测试驱动程序,我的代码几乎与你的前三行相同(一直到"ctl00_ContentPlaceHolder1_...";)。但这意味着为了帮助你,我们可能需要更多的代码 - 比如如何创建"d1" - 因为这可能是你实际遇到问题的地方。
话虽如此,我注意到查看我自己的代码的第一件事是,我不得不以以下形式插入一个等待,只是因为试图与网页交互(这都是一个语句,ffDriver
是我的 FirefoxDriver 对象):
(new WebDriverWait(ffDriver, 100))
.until(ExpectedConditions.presenceOfElementLocated(By.id("main-content")));
所以我的第一直觉是Selenium可能试图在网页加载之前找到元素(尽管IIRC,如果是这样,你通常会得到一个更清晰的错误)。根据您更新的问题,从Selenium的角度来看,附加到元素的JavaScript的存在可能会减慢速度。
WebDriverWait wait = new WebDriverWait(driver, 18);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("ctl00_ContentPlaceHolder1_txtAmt")));
driver.findElement(By.id("ctl00_ContentPlaceHolder1_txtAmt")).clear();
driver.findElement(By.id("ctl00_ContentPlaceHolder1_txtAmt")).sendKeys("Enter-New-Text");
相关文章:
- Selenium WebDriver and JavaScript change
- 运行Selenium Webdriver Test时,不会出现警报
- 执行JavaScript代码,使用selenium webdriver或WatiN从控制台获取日志
- Selenium>如何使用Selenium Webdriver调用onClick javascript函数
- 如何使用Selenium WebDriver中的JavasSript在文本字段/框中输入值
- 如何使用Java在Selenium WebDriver的隐藏字段中键入一些文本
- 使用Selenium WebDriver单击下拉菜单不会激活Javascript来添加或删除页面中的项目
- 为Selenium Webdriver的以下href创建Xpath
- Selenium Webdriver:元素当前不可见
- 如何创建javascript执行器,使元素在selenium webdriver中可见
- Selenium-webdriver (Java Script) 等待元素消失
- selenium-webdriver 将函数数组作为参数传递给 executeScript
- Selenium webdriver JS-如何等待元素可见
- 如何将JavaScript与Selenium WebDriver Java结合使用
- Selenium webdriver JavaScript 無法點擊 link
- 在Chrome中禁用JavaScript,使用C#和Selenium WebDriver渲染页面
- Selenium Webdriver 无法在菜单中找到 href 元素
- 尝试使用 JavascriptExecutor 使用 Selenium Webdriver 单击单选按钮时出错
- 运行Selenium-webdriver时拒绝连接
- 如何删除文本字段中的默认值并使用 Selenium WebDriver 键入新值