我有一个出现在“单选按钮选择”上的文本框,我必须输入特定格式的值(XYZ989898-99)。但是,我无法使用硒中输入文本的常用方法来做到这一点。
与Textbox相关的背景信息:
方法1:
driver.findElement(locator).SendKeys("989898-99");
方法2:
driver.findElement(locator).clear();
driver.findElement(locator).SendKeys("XYZ989898-99");
方法3:
WebElement element = driver.findElement(locator);
Actions action1 = new Actions(driver);
action1.movetoElement(element).click().perform();
action1.sendKeys("XYZ989898-99");
HTML示例:
<div class="value" ng-show="selectedValue" style="">
<label class="labelAboveTextBox">XYZ Number*</label>
<input type="text" class="Value" ng-model="XYZNumber" ng-
req="XYZNumber" xyz-input="" maxlength="12" style="value"
id="value" value="XYZ" required="required">
<!-- ngIf: invalidtspmessage -->
<span style="font-family: 'NeueHaasGroteskText';font-size:
0.7rem;color: black;">
Note: Enter XYZ is this format: XXXXXXXXX-XX
</span>
</div>
我想知道是否可以使用其他方法来解决此问题,以及上述方法为何行不通。
答案 0 :(得分:2)
您必须使用.sendKeys()方法代替.SendKeys()在UI端编写任何内容
在第三种方法中,您使用了错误的方法.movetoElement()。方法名称是.moveToElement()。
对于sendKeys()不需要使用Actions类。基本上,它用于键盘事件和鼠标事件。
(WebElement).sendKeys(“ 989898-99”); //您可以使用的第一种方法
(WebElement).clear(); //您可以使用的第二种方法
(WebElement).sendKeys(“ XYZ989898-99”);
希望这将帮助您解决错误。
答案 1 :(得分:1)
您可以使用其他方法设置文本,方法是使用JavaScriptExecutor。在执行操作之前,请稍等片刻。
尝试以下示例代码:
Thread.sleep(3000);
((JavascriptExecutor) driver).executeScript("document.getElementById('value').value='XYZ989898-99';");
由于id是唯一的,因此可以使用JavaScript的getElementById()
函数来设置值。
如果您想通过sendKeys()
方法设置文本,而在此之前,如果您想清除文本,则简单的clear()
可能不起作用,您可以尝试删除XYZ
值,然后尝试再次发送如下所示的值:
// Wait for some time
Thread.sleep(3000);
// Locate the element first and store it in some variable
WebElement element = driver.findElement(By.id("value"));
// Fetch the existing text from the field first
String existingValue = element.getAttribute("value");
// Wait for some time
Thread.sleep(3000);
// Click on that element first so the focus will shift to there
element.click();
// Wait for some time
Thread.sleep(2000);
// Loop until the existing value length
for(int i=0;i<existingValue.length();i++) {
// Remove the existing character text one by one
element.sendKeys(Keys.BACK_SPACE);
}
// Try to send the text at the end, make sure that you should append XYZ as a prefix
element.sendKeys("XYZ989898-99");
希望对您有帮助...