Просто попробуйте и поймайте:
try {
WebDriverWait wait = new WebDriverWait(Drivers.getDriver(), 10);
wait.until(ExpectedConditions.visibilityOf(position_header));
wait.until(ExpectedConditions.visibilityOf(player_header));
wait.until(ExpectedConditions.visibilityOf(num_of_players));
wait.until(ExpectedConditions.visibilityOf(leaderboard_picks_header));
System.out.println("Leaderboard is now displayed");
return true;
}
catch (Exception e){
return false;
}
Надеюсь, это поможет вам!
Похоже, что этот код не является истинной причиной проблемы. Посмотрите, помогает ли одна из этих страниц:
Обновление: Фиксированный URL к первой странице.
У меня была похожая проблема, и я нашел виновника в нашем коде.
Использованная техника: 0. Убедитесь, что в Spy ++ есть только два неуправляемых потока с элементами управления (WinForms и GDI +):
public static class ThreadingHelper_NativeMethods
{
[DllImport("user32.dll")]
public static extern bool IsGUIThread(bool bConvert);
}
вызовите это из потока пользовательского интерфейса при init:
// This code forces initialization of .NET BroadcastEventWindow to the UI thread.
// http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/fb267827-1765-4bd9-ae2f-0abbd5a2ae22
if (ThreadingHelper_NativeMethods.IsGUIThread(false))
{
Microsoft.Win32.SystemEvents.InvokeOnEventsThread(new MethodInvoker(delegate()
{
int x = 0;
}));
}
Запомните управляемый идентификатор потока пользовательского интерфейса в одноэлементном классе.
Поиск всех пользовательских элементов управления, определенных в нашем коде. В конструкторе каждого элемента управления перед вызовом InitializeComponent () я поместил код, который проверяет текущий идентификатор потока по отношению к основному идентификатору потока. Если они не равны, Assert (false).
Подписаться на SystemEvents.UserPreferencesChanging. Debug.Assert (false) в обработчике: это происходит до SystemEvents.UserPreferencesChanged, поэтому, надеюсь, отладчик остановится здесь.
Проверьте список подписчиков SystemEvents в отладчике. Найти подписчика в словаре _handles словаря. Открытие SynchronizationContext каждого обратного вызова должно выявить проблему: тот же идентификатор потока, что и для элемента управления, созданного в потоке без пользовательского интерфейса. SystemEvents выполнит обработчик событий в этом потоке, заблокировав его для потока пользовательского интерфейса.
The other answer comes from this Aaron Lerch. I really like the "filtered breakpoint on someone else's code" part. I think it would've saved me a couple of days.