我仍然不清楚究竟是什麼導致了這一點 - 我看到不一致的失敗發送所有的密鑰到一些extjs組件。我不確定這是否是一件奇怪的事情,或者硒有點片面。我們在做字符串或調用發送鍵時沒有做任何奇怪的事情(除了額外的等待檢查元素被啓用並顯示),雖然它不像我們的代碼中的東西。
我的解決方案是重複發送密鑰,直到它們明顯粘住。我裹着硒API的一些原因所以WebElements所有的調用都是通過一個叫WrappedElement類具有發送鍵的方法進行連接:
public void SendKeys(string text)
{
Func<string> errorMessage =() => string.Format("couldn't send keys {0} entered either {1} or {2}", text, Text, Value);
Action actionToTry =() =>
{
_element.Clear();
RawSendKeys(text);
};
Wait.RepeatedlyTry(actionToTry,() => Text == text || Value == text, errorMessage);
}
public void RawSendKeys(string text)
{
_element.SendKeys(text);
}
wait方法的簡化版本是這樣的:
public void RepeatedlyTry(Action actionToTry, Func<bool> completed, Func<string> errorMessage)
{
Wait.Until(d =>
{
actionToTry();
return completed();
});
}
凡直到剛剛呼叫,直到上配置DefaultWait
我從來沒有見過這樣的事......你嘗試過不同的機器上相同的代碼(也許在計算機上的一些進程的一些干擾? ) –
有幾次 - 它似乎工作正常,但它並不總是在我的機器上失敗,所以我不能100%確定它是否只是我的機器上的東西。但是,如果是這樣的話,哪種程序會有這種干擾? – Shisa
這很奇怪,你可以使用FirefoxDriver重現嗎?你可以嘗試一些不同的鍵盤佈局(EN)?你使用什麼版本的驅動程序?另外,看看這裏:https://code.google.com/p/chromedriver/issues/detail?id=405 –