Skip to content

Commit e15a816

Browse files
committed
optimize navigate between hero tabs
1 parent 1112be6 commit e15a816

File tree

1 file changed

+34
-30
lines changed

1 file changed

+34
-30
lines changed

TbsCore/Helpers/NavigationHelper.cs

Lines changed: 34 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -285,42 +285,46 @@ public static async Task<bool> ToTreasury(Account acc, Village vill, TreasuryTab
285285

286286
public static async Task<bool> ToHero(Account acc, HeroTab tab)
287287
{
288-
var heroAvatarNode = acc.Wb.Html.GetElementbyId("heroImageButton");
288+
var wait = new WebDriverWait(acc.Wb.Driver, TimeSpan.FromMinutes(1));
289289

290-
if (heroAvatarNode == null)
290+
if (!acc.Wb.CurrentUrl.Contains("hero"))
291291
{
292-
acc.Logger.Warning($"Cannot find Hero avatar");
293-
return false;
294-
}
292+
var heroAvatarNode = acc.Wb.Html.GetElementbyId("heroImageButton");
295293

296-
var elements = acc.Wb.Driver.FindElements(By.XPath(heroAvatarNode.XPath));
297-
if (elements.Count == 0)
298-
{
299-
acc.Logger.Warning($"Cannot find Hero avatar");
300-
return false;
301-
}
302-
elements[0].Click();
294+
if (heroAvatarNode == null)
295+
{
296+
acc.Logger.Warning($"Cannot find Hero avatar");
297+
return false;
298+
}
303299

304-
var wait = new WebDriverWait(acc.Wb.Driver, TimeSpan.FromMinutes(1));
305-
wait.Until(driver =>
300+
var elements = acc.Wb.Driver.FindElements(By.XPath(heroAvatarNode.XPath));
301+
if (elements.Count == 0)
302+
{
303+
acc.Logger.Warning($"Cannot find Hero avatar");
304+
return false;
305+
}
306+
elements[0].Click();
307+
308+
wait.Until(driver =>
309+
{
310+
acc.Wb.UpdateHtml();
311+
var heroDiv = acc.Wb.Html.GetElementbyId("heroV2");
312+
if (heroDiv == null) return false;
313+
var aNode = heroDiv.Descendants("a").FirstOrDefault(x => x.GetAttributeValue("data-tab", 0) == 1);
314+
if (aNode == null) return false;
315+
return aNode.HasClass("active");
316+
});
317+
}
306318
{
307319
acc.Wb.UpdateHtml();
308-
var heroDiv = acc.Wb.Html.GetElementbyId("heroV2");
309-
if (heroDiv == null) return false;
310-
var aNode = heroDiv.Descendants("a").FirstOrDefault(x => x.GetAttributeValue("data-tab", 0) == 1);
311-
if (aNode == null) return false;
312-
return aNode.HasClass("active");
313-
});
314-
315-
if (tab == HeroTab.Inventory) return true;
316-
317-
var navigatorDiv = acc.Wb.Html.GetElementbyId("heroV2");
318-
var tabNode = navigatorDiv.Descendants("a").FirstOrDefault(x => x.GetAttributeValue("data-tab", 0) == (int)tab);
319-
if (tabNode == null) return false;
320-
var tabElements = acc.Wb.Driver.FindElements(By.XPath(tabNode.XPath));
321-
if (tabElements.Count == 0) return false;
322-
tabElements[0].Click();
323-
320+
var navigatorDiv = acc.Wb.Html.GetElementbyId("heroV2");
321+
var tabNode = navigatorDiv.Descendants("a").FirstOrDefault(x => x.GetAttributeValue("data-tab", 0) == (int)tab);
322+
if (tabNode == null) return false;
323+
if (tabNode.HasClass("active")) return true;
324+
var tabElements = acc.Wb.Driver.FindElements(By.XPath(tabNode.XPath));
325+
if (tabElements.Count == 0) return false;
326+
tabElements[0].Click();
327+
}
324328
wait.Until(driver =>
325329
{
326330
acc.Wb.UpdateHtml();

0 commit comments

Comments
 (0)