我遇到了一个特别令人沮丧的问题,就是Webdriver的SendKeys方法。我正在目睹田野被填满,但一旦焦点被移除,这些领域就会被清除。
源代码片段:
<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>注意,输入标记有许多属性。
我试过:
inputField.clear();
inputField.click();
inputField.sendKeys("text to input");此外:
String script = "arguments[0].value='text to input';";
javaScriptExecutor("script here", inputField);此外:
inputField.sendKeys("text to input", Keys.TAB);在所有情况下,当驱动程序移动到下一个字段时,该字段将被填充并擦除。在FF或Chrome上没有区别
我使用Selenium 3.0.0-beta3,Firefox 49.0,Chrome 53。
发布于 2022-11-09 15:18:06
我想这个问题已经和你无关了。尽管如此,我还是有一种解决办法,在Selenium C#上的自动化测试中,我实现了类似的情况。
我刚刚在await Task.Delay(TimeSpan.FromSeconds(1))执行之前添加了webElement.SendKeys('text')。在我的例子中,一些JS脚本仍然在处理文本发送,因为它是测试执行范围内页面上的第一个操作。我尝试在Selenium JsScriptExecutor中使用JsScriptExecutor等待,直到JS脚本停止它们的执行,但在我的例子中它似乎不起作用:
new WebDriverWait(this.Driver, TimeSpan.FromSeconds(timeout))
.Until((Driver)
=> ((IJavaScriptExecutor)this.Driver)
.ExecuteScript("return document.readyState")
.ToString()
.Equals("complete"));因此,超时不是最好的决定,而是仍然有效的决定。
https://stackoverflow.com/questions/39639734
复制相似问题