Селен щелкнув по неверному элементу
У меня есть ряд тестов. Иногда, если элемент не может быть найден, он просто щелкает в левом верхнем углу экрана. Это не происходит все время, однако это случается. Я не уверен, почему это происходит. В моем методе setUp я говорю ему нажать на элемент "Развернуть", однако, если он не может найти этот элемент, я помещаю его в ловушку и игнорирую его. По какой-то причине, когда он не может найти элемент, он просто щелкает в верхнем левом углу экрана, в котором находится сеанс приложения.
Есть ли у кого-нибудь идеи, почему это происходит, или просто селен иногда реагирует?
Мой код выглядит следующим образом
private string wordId = OfficeVersion.Word();
private string excelId = OfficeVersion.Excel();
private string powerPointId = OfficeVersion.PowerPoint();
private const string AppDriverUrl = "http://127.0.0.1:4723";
public static WindowsDriver<WindowsElement> excelSession;
public static WebDriverWait webDriverWait;
xl.Workbook WB;
public static bool skipTearDown = false;
WindowsElement create;
WindowsElement blankWorkBook;
public static DesiredCapabilities appCapabilities = new DesiredCapabilities();
[TestInitialize]
appCapabilities.SetCapability("app", excelId);
var initialSession = new WindowsDriver<WindowsElement>(new Uri(AppDriverUrl), appCapabilities);
var capabilities = new DesiredCapabilities();
capabilities.SetCapability("app", "Root");
excelSession = new WindowsDriver<WindowsElement>(new Uri(AppDriverUrl), capabilities);
webDriverWait = new WebDriverWait(excelSession, TimeSpan.FromSeconds(10));
CommonMethods.keyCheck(excelSession);
webDriverWait = new WebDriverWait(excelSession, TimeSpan.FromSeconds(10));
CommonMethods.IsElementDisplayed(excelSession, new StackTrace(true).GetFrame(0).GetFileLineNumber(), new StackTrace(true).GetFrame(0).GetMethod(), "CreateErrorIcon", "Create error when launching Excel");
try
{
Это элемент, который я не могу игнорировать, если он не существует
webDriverWait.Until(ExpectedConditions.ElementToBeClickable(excelSession.FindElementByName("Maximize"))).Click();
}
catch (Exception)
{
//ignore
}
1 ответ
Вы можете сначала попытаться получить текущий дескриптор окна, а затем попытаться найти и получить веб-элемент, указывающий на кнопку "Развернуть" для окна. Возможно, вам также может понадобиться просто подождать определения местоположения WebElement, чтобы быть в безопасности.
Этот API может быть полезен для клиента C# для selenium - driver.SwitchTo().Window(handle)
А для деталей, вы можете проверить здесь
Я столкнулся с той же проблемой при попытке выбрать элемент из поля со списком. Попытка щелкнуть элемент всегда приводит к щелчку в верхнем левом углу экрана. Очень неприятно.
Я обошел это, используя действие, чтобы переместить мышь к элементу, а затем выполнить щелчок.
var a = new Actions(Session);
a.MoveToElement(v);
a.Click();
a.Perform();