我正在使用java使用Selenium在2个文本框中输入文本。我可以在第一个文本框中输入文本,但在第二个文本框中,我不断得到元素不可见异常
HTML代码。。
<form name="form">
<div class="form-group">
<input name="name" type="text" class="form-control" ng-model="name" placeholder="Name*" required>
</div>
<div class="form-group">
<input name="email" id="email" type="email" class="form-control" ng-model="email" ng-change="(form.email.$dirty && form.email.$valid) ? error='' : error='Please enter a valid email'" placeholder="Email*" required autofocus/>
</div>
</form>
Java代码。。
WebElement name = driver.findElement(By.name("name"));
name.sendKeys("Sample Name");
WebElement signup_email = driver.findElement(By.name("email"));
signup_email.sendKeys("abc@xyz.com");
错误:
组织。openqa。硒。ElementNotVisibleException:元素当前不可见,因此可能无法与命令持续时间或超时交互:19毫秒生成信息:版本:“2.53.1”,版本:“a36b8b1”,时间:“2016-06-30 17:32:46”系统信息:主机:“Hp PC”,ip:“172.16.255.131”,操作系统。名称:“Windows 7”,操作系统。arch:“amd64”,操作系统。版本:“6.1”,java。版本:“1.7.0\u 79”会话ID:2e7ab2fd-cd6b-428e-86e7-a4f7d8d737fa驱动程序信息:org。openqa。硒。firefox。FirefoxDriver功能[{平台=WINDOWS,acceptSslCerts=true,javascriptEnabled=true,cssSelectorsEnabled=true,databaseEnabled=true,browserName=firefox,handlesAlerts=true,nativeEvents=false,webStorageEnabled=true,rotatable=false,locationContextEnabled=true,applicationCacheEnabled=true,takesScreenshot=true,version=47.0.1}]。反映NativeConstructorAccessorImpl。sun上的newInstance0(本机方法)。反映NativeConstructorAccessorImpl。sun上的newInstance(NativeConstructorAccessorImpl.java:57)。反映授权ConstructorAccessorImpl。java上的newInstance(DelegatingConstructorAccessorImpl.java:45)。lang.reflect。构造函数。org上的newInstance(Constructor.java:526)。openqa。硒。遥远的ErrorHandler。在org上创建throwable(ErrorHandler.java:206)。openqa。硒。遥远的ErrorHandler。throwIfResponseFailed(ErrorHandler.java:158)位于org。openqa。硒。遥远的RemoteWebDriver。在org上执行(RemoteWebDriver.java:678)。openqa。硒。遥远的RemoteWebElement。在org上执行(RemoteWebElement.java:327)。openqa。硒。遥远的RemoteWebElement。src上的sendKeys(RemoteWebElement.java:122)。测验。电子邮件注册。在src进行测试(EmailSignUp.java:107)。测验。电子邮件注册。main(EmailSignUp.java:27)
编辑1:
在浏览器控制台中,以下类由angular Js自动填充
如果出现第二个文本框,我不明白我会错在哪里。角度代码是否导致问题??请帮助。。
可能是当您要定位元素时,它不会出现在DOM上,您应该尝试使用WebDriverWait等待元素出现,如下所示:-
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement name = wait.until(ExpectedConditions.presenceOfElementLocated(By.name("name")));
name.sendKeys("Sample Name");
WebElement signup_email = wait.until(ExpectedConditions.presenceOfElementLocated(By.name("email")));
signup_email.sendKeys("abc@xyz.com");
Edited1:-如果您在sendKeys()期间仍面临此问题,我认为您的元素中嵌入了一些javascript,使其不可见,在这种情况下,请尝试使用JavascriptExecutor设置值,如下所示:-
WebElement signup_email = wait.until(ExpectedConditions.presenceOfElementLocated(By.name("email")));
((JavascriptExecutor)driver).executeScript("arguments[0].value = 'abc@xyz.com'", signup_email);
Edited1:-如果你想让元素可见,如果不确定css在你的元素中到底是什么,但下面是使元素可见的通用方法,如下所示:-
WebElement signup_email = wait.until(ExpectedConditions.presenceOfElementLocated(By.name("email")));
signup_email = (WebElement)((JavascriptExecutor)driver).executeScript("arguments[0].style.visibility = 'visible'; return arguments[0];", signup_email);
//Now if it is visible then goto set value
signup_email.sendKeys("abc@xyz.com");
编辑:-当我看到这个元素与angularjs
一起工作时,尝试angularjs
东西使用JavascriptExecator
设置值如下:
WebElement signup_email = wait.until(ExpectedConditions.presenceOfElementLocated(By.name("email")));
((JavascriptExecutor).executeScript("angular.element(arguments[0]).scope().email = arguments[1]", signup_email, "abc@xyz.com");
希望对您有所帮助……:)
本文向大家介绍怎样在文本框中禁用中文输入法?相关面试题,主要包含被问及怎样在文本框中禁用中文输入法?时的应答技巧和注意事项,需要的朋友参考一下 用文本框的 css 属性 松开键时检查文本框的的值,只保留 Unicode 编码在 0 ~ 255 的字符 把所有双字节字符替换为空 把中文字符替换为空 https://www.cnblogs.com/longhao510/p/5476926.html
问题内容: 我正在尝试我的React.js的第一部分,并在很早的时候就陷入了困境…我有下面的代码,该代码将搜索表单呈现为。但是,在搜索框中输入内容无济于事。 大概在通过道具并上下移动时会丢失一些东西,这似乎是一个常见问题。但是我很沮丧-我看不到缺少的东西。 (最终,我会使用其他类型的,但是我只是想让这一类正常工作。) 问题答案: 您尚未将道具放在机箱中。它必须在JSX中。 在文档中充分考虑了将 p
问题内容: 使用jQuery获取和呈现输入值的方法有哪些? 这是一个: 问题答案:
我正在尝试使用Chrome中的Selenium Webdriver自动推文。我可以登录并单击Tweet按钮,打开Compose new Tweet框,但当我尝试使用我会得到 使用:selenium-java-3.141.59 chrome=74.0.3729.169(驱动程序信息:chromedriver=74.0.3729.6) 下面是相关代码: 令我惊讶的是,我没有在上得到错误,而是在elem
这只是我给tkinter文本输入框在pyplay中的一次尝试。我很确定它不会正常工作,但决定无论如何都要试一试,因为我没有什么可失去的。tkinter屏幕不显示,直到你退出pyplay。所以,我不是问是否有人知道如何修复代码,而是问是否有人知道在pyplay中创建文本框的最简单方法。我知道有一个文本输入类模块可以导入。如果你认为这是最简单的方法,那么你能告诉我吗?如果没有,请告诉我你认为最简单的方