Вы можете написать custom wait реализации, например, так:
wait.Until(element => /* Do something with the element */);
Так что, если вы хотите дождаться местоположения, вам, вероятно, следует сначала подождать (вручную), чтобы увидеть, что Ваше желаемое местоположение. Например:
int expectedLocationX = WEAsesor.BtnColumnas.Location.X;
int expectedLocationY = WEAsesor.BtnColumnas.Location.Y;
После того, как вы знаете ожидаемое местоположение вашего элемента, напишите ваше ожидание:
/* you set whatever the X or Y is, in this example, 10 */
int expectedLocationX = 10;
int expectedLocationY = 10;
wait.Until(driver =>
{
bool isXCorrect = WEAsesor.BtnColumnas.Position.X == expectedLocationX;
bool isYCorrect = WEAsesor.BtnColumnas.Position.Y == expectedLocationY;
/* This code will return *true* only if both the X and Y are correct.*/
return isXCorrent && isYCorrect;
});
По сути, метод wait.Until(driver => ...)
говорит: «здесь, используйте драйвер если хотите, сделайте свое дело и верните true, если вы хотите, чтобы я прекратил ждать. Если вы вернете false или null, я продолжу запускать ...
и буду ждать, пока вы не вернете мне true или не ноль.
Итак, вы говорите объекту wait
, чтобы дождаться, пока ваш элемент окажется в ожидаемом месте.