Selenium C# ImplicitWait won't wait for element to load












1















I have created a custom method to implicitly wait for an element to load, then I use this in a custom click method as so:



public static void WeElementToBeClickable(this IWebElement element, int sec = 10)
{
var wait = new WebDriverWait(Driver.Browser(), TimeSpan.FromSeconds(sec));
wait.Until(ExpectedConditions.ElementToBeClickable(element));
}

public static void WeClick(this IWebElement element, int sec = 10)
{
element.WeElementToBeClickable();
element.Click();
}


I then attach this to any element I click on to make sure it always polls the DOM to make sure the element has been loaded, but it doesn't seem to wait for some specific elements to load.



I'm searching for this element as so:



<span class="button add fr" onclick="GoToHash('/ContractorCommon/Contractor/ContractorAdd', null, 'Contractor'); "><span class="icon-add"></span> Contractor</span>

public IWebElement AddContractorIcon => Driver.FindElement(By.XPath("//span[@class='button add fr']"));


But it always gives off the following exception straight away:



OpenQA.Selenium.NoSuchElementException : no such element: Unable to locate element: {"method":"xpath","selector":"//span[@class='button add fr']"}


I've tried everything to get it to wait for this element to load but I can't seem to figure it out. Weirdly enough if I debug it...it finds the element.



Any help would be greatly appreciated!










share|improve this question

























  • Have you tried Thread.Sleep() ?

    – Maksym Labutin
    Nov 21 '18 at 15:40











  • @MaksymLabutin yes I've tried and it works with a Thread.Sleep() but for obvious reasons I want to try and avoid using it. Plus I'm quite sure this ImplicitWait should be working!

    – L Sainsbury
    Nov 21 '18 at 15:51











  • Maybe the span (button) has a fade in effect?

    – Maksym Labutin
    Nov 21 '18 at 16:09













  • @MaksymLabutin I know that the button is dynamic as once you've clicked on the button it turns into a "Save" button but my ImplicitWait should still poll the DOM until it's present shouldn't it?

    – L Sainsbury
    Nov 21 '18 at 16:22











  • Try ExpectedConditions.VisibilityOfAllElementsLocatedBy seleniumhq.github.io/selenium/docs/api/dotnet/html/…

    – Maksym Labutin
    Nov 21 '18 at 16:40


















1















I have created a custom method to implicitly wait for an element to load, then I use this in a custom click method as so:



public static void WeElementToBeClickable(this IWebElement element, int sec = 10)
{
var wait = new WebDriverWait(Driver.Browser(), TimeSpan.FromSeconds(sec));
wait.Until(ExpectedConditions.ElementToBeClickable(element));
}

public static void WeClick(this IWebElement element, int sec = 10)
{
element.WeElementToBeClickable();
element.Click();
}


I then attach this to any element I click on to make sure it always polls the DOM to make sure the element has been loaded, but it doesn't seem to wait for some specific elements to load.



I'm searching for this element as so:



<span class="button add fr" onclick="GoToHash('/ContractorCommon/Contractor/ContractorAdd', null, 'Contractor'); "><span class="icon-add"></span> Contractor</span>

public IWebElement AddContractorIcon => Driver.FindElement(By.XPath("//span[@class='button add fr']"));


But it always gives off the following exception straight away:



OpenQA.Selenium.NoSuchElementException : no such element: Unable to locate element: {"method":"xpath","selector":"//span[@class='button add fr']"}


I've tried everything to get it to wait for this element to load but I can't seem to figure it out. Weirdly enough if I debug it...it finds the element.



Any help would be greatly appreciated!










share|improve this question

























  • Have you tried Thread.Sleep() ?

    – Maksym Labutin
    Nov 21 '18 at 15:40











  • @MaksymLabutin yes I've tried and it works with a Thread.Sleep() but for obvious reasons I want to try and avoid using it. Plus I'm quite sure this ImplicitWait should be working!

    – L Sainsbury
    Nov 21 '18 at 15:51











  • Maybe the span (button) has a fade in effect?

    – Maksym Labutin
    Nov 21 '18 at 16:09













  • @MaksymLabutin I know that the button is dynamic as once you've clicked on the button it turns into a "Save" button but my ImplicitWait should still poll the DOM until it's present shouldn't it?

    – L Sainsbury
    Nov 21 '18 at 16:22











  • Try ExpectedConditions.VisibilityOfAllElementsLocatedBy seleniumhq.github.io/selenium/docs/api/dotnet/html/…

    – Maksym Labutin
    Nov 21 '18 at 16:40
















1












1








1








I have created a custom method to implicitly wait for an element to load, then I use this in a custom click method as so:



public static void WeElementToBeClickable(this IWebElement element, int sec = 10)
{
var wait = new WebDriverWait(Driver.Browser(), TimeSpan.FromSeconds(sec));
wait.Until(ExpectedConditions.ElementToBeClickable(element));
}

public static void WeClick(this IWebElement element, int sec = 10)
{
element.WeElementToBeClickable();
element.Click();
}


I then attach this to any element I click on to make sure it always polls the DOM to make sure the element has been loaded, but it doesn't seem to wait for some specific elements to load.



I'm searching for this element as so:



<span class="button add fr" onclick="GoToHash('/ContractorCommon/Contractor/ContractorAdd', null, 'Contractor'); "><span class="icon-add"></span> Contractor</span>

public IWebElement AddContractorIcon => Driver.FindElement(By.XPath("//span[@class='button add fr']"));


But it always gives off the following exception straight away:



OpenQA.Selenium.NoSuchElementException : no such element: Unable to locate element: {"method":"xpath","selector":"//span[@class='button add fr']"}


I've tried everything to get it to wait for this element to load but I can't seem to figure it out. Weirdly enough if I debug it...it finds the element.



Any help would be greatly appreciated!










share|improve this question
















I have created a custom method to implicitly wait for an element to load, then I use this in a custom click method as so:



public static void WeElementToBeClickable(this IWebElement element, int sec = 10)
{
var wait = new WebDriverWait(Driver.Browser(), TimeSpan.FromSeconds(sec));
wait.Until(ExpectedConditions.ElementToBeClickable(element));
}

public static void WeClick(this IWebElement element, int sec = 10)
{
element.WeElementToBeClickable();
element.Click();
}


I then attach this to any element I click on to make sure it always polls the DOM to make sure the element has been loaded, but it doesn't seem to wait for some specific elements to load.



I'm searching for this element as so:



<span class="button add fr" onclick="GoToHash('/ContractorCommon/Contractor/ContractorAdd', null, 'Contractor'); "><span class="icon-add"></span> Contractor</span>

public IWebElement AddContractorIcon => Driver.FindElement(By.XPath("//span[@class='button add fr']"));


But it always gives off the following exception straight away:



OpenQA.Selenium.NoSuchElementException : no such element: Unable to locate element: {"method":"xpath","selector":"//span[@class='button add fr']"}


I've tried everything to get it to wait for this element to load but I can't seem to figure it out. Weirdly enough if I debug it...it finds the element.



Any help would be greatly appreciated!







c# selenium implicitwait






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 21 '18 at 15:43









bobbyrne01

2,18064393




2,18064393










asked Nov 21 '18 at 15:36









L SainsburyL Sainsbury

61




61













  • Have you tried Thread.Sleep() ?

    – Maksym Labutin
    Nov 21 '18 at 15:40











  • @MaksymLabutin yes I've tried and it works with a Thread.Sleep() but for obvious reasons I want to try and avoid using it. Plus I'm quite sure this ImplicitWait should be working!

    – L Sainsbury
    Nov 21 '18 at 15:51











  • Maybe the span (button) has a fade in effect?

    – Maksym Labutin
    Nov 21 '18 at 16:09













  • @MaksymLabutin I know that the button is dynamic as once you've clicked on the button it turns into a "Save" button but my ImplicitWait should still poll the DOM until it's present shouldn't it?

    – L Sainsbury
    Nov 21 '18 at 16:22











  • Try ExpectedConditions.VisibilityOfAllElementsLocatedBy seleniumhq.github.io/selenium/docs/api/dotnet/html/…

    – Maksym Labutin
    Nov 21 '18 at 16:40





















  • Have you tried Thread.Sleep() ?

    – Maksym Labutin
    Nov 21 '18 at 15:40











  • @MaksymLabutin yes I've tried and it works with a Thread.Sleep() but for obvious reasons I want to try and avoid using it. Plus I'm quite sure this ImplicitWait should be working!

    – L Sainsbury
    Nov 21 '18 at 15:51











  • Maybe the span (button) has a fade in effect?

    – Maksym Labutin
    Nov 21 '18 at 16:09













  • @MaksymLabutin I know that the button is dynamic as once you've clicked on the button it turns into a "Save" button but my ImplicitWait should still poll the DOM until it's present shouldn't it?

    – L Sainsbury
    Nov 21 '18 at 16:22











  • Try ExpectedConditions.VisibilityOfAllElementsLocatedBy seleniumhq.github.io/selenium/docs/api/dotnet/html/…

    – Maksym Labutin
    Nov 21 '18 at 16:40



















Have you tried Thread.Sleep() ?

– Maksym Labutin
Nov 21 '18 at 15:40





Have you tried Thread.Sleep() ?

– Maksym Labutin
Nov 21 '18 at 15:40













@MaksymLabutin yes I've tried and it works with a Thread.Sleep() but for obvious reasons I want to try and avoid using it. Plus I'm quite sure this ImplicitWait should be working!

– L Sainsbury
Nov 21 '18 at 15:51





@MaksymLabutin yes I've tried and it works with a Thread.Sleep() but for obvious reasons I want to try and avoid using it. Plus I'm quite sure this ImplicitWait should be working!

– L Sainsbury
Nov 21 '18 at 15:51













Maybe the span (button) has a fade in effect?

– Maksym Labutin
Nov 21 '18 at 16:09







Maybe the span (button) has a fade in effect?

– Maksym Labutin
Nov 21 '18 at 16:09















@MaksymLabutin I know that the button is dynamic as once you've clicked on the button it turns into a "Save" button but my ImplicitWait should still poll the DOM until it's present shouldn't it?

– L Sainsbury
Nov 21 '18 at 16:22





@MaksymLabutin I know that the button is dynamic as once you've clicked on the button it turns into a "Save" button but my ImplicitWait should still poll the DOM until it's present shouldn't it?

– L Sainsbury
Nov 21 '18 at 16:22













Try ExpectedConditions.VisibilityOfAllElementsLocatedBy seleniumhq.github.io/selenium/docs/api/dotnet/html/…

– Maksym Labutin
Nov 21 '18 at 16:40







Try ExpectedConditions.VisibilityOfAllElementsLocatedBy seleniumhq.github.io/selenium/docs/api/dotnet/html/…

– Maksym Labutin
Nov 21 '18 at 16:40














0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53415540%2fselenium-c-sharp-implicitwait-wont-wait-for-element-to-load%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53415540%2fselenium-c-sharp-implicitwait-wont-wait-for-element-to-load%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Can a sorcerer learn a 5th-level spell early by creating spell slots using the Font of Magic feature?

ts Property 'filter' does not exist on type '{}'

mat-slide-toggle shouldn't change it's state when I click cancel in confirmation window