Selenium C# ImplicitWait won't wait for element to load
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
|
show 5 more comments
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
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
TryExpectedConditions.VisibilityOfAllElementsLocatedBy
seleniumhq.github.io/selenium/docs/api/dotnet/html/…
– Maksym Labutin
Nov 21 '18 at 16:40
|
show 5 more comments
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
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
c# selenium implicitwait
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
TryExpectedConditions.VisibilityOfAllElementsLocatedBy
seleniumhq.github.io/selenium/docs/api/dotnet/html/…
– Maksym Labutin
Nov 21 '18 at 16:40
|
show 5 more comments
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
TryExpectedConditions.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
|
show 5 more comments
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
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