首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >:输入文本后清除字段

:输入文本后清除字段
EN

Stack Overflow用户
提问于 2016-09-22 12:57:05
回答 1查看 1.2K关注 0票数 2

我遇到了一个特别令人沮丧的问题,就是Webdriver的SendKeys方法。我正在目睹田野被填满,但一旦焦点被移除,这些领域就会被清除。

源代码片段:

代码语言:javascript
复制
    <div class="search-row__departure">
<div class="search-label">
<label onclick="$(this).parent().parent().find('.airport-input-row:first input, select').focus();">Departure</label>
</div>
<div class="search-input__text">
<span id="id23">
<span id="idc">
<div class="airport-input-row">
    <span class="inputContainer">
    <input id="id11" class="departurePoint" name="airport_selection_panel:departurePoint:departureAirportPanel:listView:0:selector:airportFragment:departurePoint" value="" autocomplete="off" onblur="var wcall=wicketAjaxPost('./?0-IBehaviorListener.4-brix~page~2-brix~journey~4-brix~package_search-child-child-packages_search_form-airport_selection_panel-departurePoint-departureAirportPanel-listView-0-selector-airportFragment-departurePoint', wicketSerialize(Wicket.$('id11')),function() { }.bind(this),function() { }.bind(this), function() {return Wicket.$('id11') != null;}.bind(this));" type="text"/>
</span>
<script>$(function(){$('#idc').parent().trigger('addField',['departurePoint','#idc .departurePoint']);})</script>
</div>

注意,输入标记有许多属性。

我试过:

代码语言:javascript
复制
inputField.clear();
inputField.click();
inputField.sendKeys("text to input");

此外:

代码语言:javascript
复制
String script = "arguments[0].value='text to input';";
javaScriptExecutor("script here", inputField);

此外:

代码语言:javascript
复制
inputField.sendKeys("text to input", Keys.TAB);

在所有情况下,当驱动程序移动到下一个字段时,该字段将被填充并擦除。在FF或Chrome上没有区别

我使用Selenium 3.0.0-beta3,Firefox 49.0,Chrome 53。

EN

回答 1

Stack Overflow用户

发布于 2022-11-09 15:18:06

我想这个问题已经和你无关了。尽管如此,我还是有一种解决办法,在Selenium C#上的自动化测试中,我实现了类似的情况。

我刚刚在await Task.Delay(TimeSpan.FromSeconds(1))执行之前添加了webElement.SendKeys('text')。在我的例子中,一些JS脚本仍然在处理文本发送,因为它是测试执行范围内页面上的第一个操作。我尝试在Selenium JsScriptExecutor中使用JsScriptExecutor等待,直到JS脚本停止它们的执行,但在我的例子中它似乎不起作用:

代码语言:javascript
复制
new WebDriverWait(this.Driver, TimeSpan.FromSeconds(timeout))
                .Until((Driver)
                => ((IJavaScriptExecutor)this.Driver)
                .ExecuteScript("return document.readyState")
                .ToString()
                .Equals("complete"));

因此,超时不是最好的决定,而是仍然有效的决定。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39639734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档