2014-01-05 36 views
16

我无法使用Web驱动程序在我的应用程序中添加任何值。 我的应用程序正在使用帧。 使用下面的命令,我能够清楚我的文本框 driver.findElement(By.name("name")).clear(); 的价值,但它不允许使用以下命令来把任何值: driver.findElement(By.name("name")).sendKeys("manish");sendkeys在Selenium Webdriver中不工作

即使点击命令适用于按钮在同一页上。

请问我该怎么做才能解决此问题。

在此先感谢。

+0

你确定你专注于正确的框架吗? – Brian

+0

你会得到什么错误?你能提供堆栈跟踪吗? – Amith

+0

是的我正在专注于正确的框架,否则我相信下面的命令不应该工作“driver.findElement(By.name(”name“))clear()”,在调试器模式下执行以下命令之前,我把一些值清楚通过使用这个,所以它应该关注正确的框架。而且令人惊讶的是,我在执行以下命令时没有遇到任何错误 – user3162976

回答

2

尝试在发送密钥之前单击文本框。

这可能是因为你需要输入之前触发场上的事件,并希望点击会做

+0

我们如何使用JavaScript进行点击请sugggest – user3162976

+0

这对我来说不起作用 – user3162976

1

使用JavaScript来在字段中单击然后使用的SendKeys()输入值。 我在过去有一个类似的问题与框架。 Javascript是最好的方法。

+0

我怎样才能使用JavaScript进行点击。我会非常感谢,如果你能提供我的代码 – user3162976

+1

我会说,Javascript永远不应该“是最好的方式”。它应该只是最后的手段。使用JavaScript执行自动化实际上并不能证明应用程序正在通过用户交互进行工作,但是如果您直接启用JavaScript,则它可以工作。我总是会通过Selenium API尝试很多其他想法,例如使用Actions将鼠标移动到字段上等(即通过交互触发javascript,而不是执行) –

0

尝试使用Javascript来sendkeys()。 JavaScript的执行者

WebElement element = driver.findElement(By.name("name")); 
JavascriptExecutor executor = (JavascriptExecutor)driver; 
executor.executeScript("arguments[0].click();", element); 

更多信息,可以发现@ JavascriptExecutor - Selenium

0

首先通过驱动控制使用帧----

driver.switchTo().frame("pass id/name/index/webelement"); 

后执行您想要做的操作webelement目前帧内 -

driver.findElement(By.name("name")).sendKeys("manish"); 
21

我也h广告该问题以及之前。但后来我做的工作是

myInputElm.click(); 
myInputElm.clear(); 
myInputElm.sendKeys('myString'); 
+0

是的,我有一个理论来解释它是什么。我认为我们这些受此影响的可能是因为我们试图发送密钥的元素在一个框架中,也许这有助于硒得到它?谢谢! –

-2

通常我保持一个临时变量。这应该工作。

var name = element(by.id('name')); 
name.clear(); 
name.sendKeys('anything'); 

希望它有帮助。

0

我已经走了同样的问题,复制粘贴也不适用于该文本框。 下面代码是我 -

WebDriver driver = new FirefoxDriver(); 
String mobNo = "99xxxxxxxx"; 
WebElement mobileElementIrs = 
driver.findElement(By.id("mobileNoPrimary")); 
mobileElementIrs.click(); 
mobileElementIrs.clear(); 
mobileElementIrs.sendKeys(mobNo); 
0

但是做工精致点击元素的作品对我来说,另一种解决方案,我发现是进入使用JavaScript,不需要该元素具有焦点值:

var _element= driver.FindElement(By.Id("e123")); 
IJavaScriptExecutor js = (IJavaScriptExecutor)driver; 
js.ExecuteScript("arguments[0].setAttribute('value', 'textBoxValue')", _element); 
0

我也有类似的问题太多,当我用

getDriver().findElement(By.id(idValue)).clear(); 
getDriver().findElement(By.id(idValue)).sendKeys(text); 

在“文本”的价值没有completetelly写入输入,想象为“Patrick“有时候写”P“又是”帕特“,...所以测试失败

我做了什么来解决,这是一个解决方法,并使用JavaScript

((JavascriptExecutor)getDriver()).executeScript("$('#"+idValue+"').val('"+value+"');"); 

现在是罚款

而不是

driver.findElement(By.id("idValue")).sendKeys("text"); 

使用,

((JavascriptExecutor)getDriver()).executeScript("$('#"+"idValue"+"').val('"+"text"+"');"); 

This为我工作。

相关问题