Many companies provide software testing solutions to the problems faced by clients. In this problem, whenever we are using 'Select' method of selenium, the Webelement Tag must be "Select". The web element mentioned in the question of 'Span' Tag.
In order to select any element from the dropdown having Tag other than Select, we can do by using click ...
In IT industry various software testing solutions are provided by companies depending on application behavior.
Below is one of the solution for DragandDrop issue w.r.t co-ordinates of webelement.
int sourceWidth = element.getSize().getWidth();
int SourceHeight = element.getSize().getHeight();
int destinationWidth = destElement.getSize().getWidth();
Speaking from MSTest framework experience here, but why not have a base class for all test classes that has a [SetUp]. This will be automatically called for every test, so your driver creation code is in one place while every test will create its own driver object.
In leading software testing solutions providers a basic and simple approach is followed to handle and avoid such failures.
Below are the steps that can help you fix this issue
Parallel Execution needs to be thread safe.
If we are using action class then we can use other way to click like Java script execution etc.
What you are wanting to achieve in verifying an email in Outlook is considered an anti-pattern in Selenium.
A lot of people think you can and should automate everything, when there are plenty of situations where automation doesn't make sense.
Take a look at the Selenium documentation where it states:
For multiple reasons, logging into sites like Gmail and ...
creating multiple Jenkins jobs with different regression.xml files pointing to them
If each Jenkins job runs the test command but pointing to different tests then each should be spinning up its own WebDriver/Browser instance so the ElementClickInterceptedException might mean your app is in a different state than what the test code assumes. It's common that ...
Using the same webdriver for all tests in parallel execution defeats the purpose of concurrency. When you are using the same webdriver for two parallel tests, then webdriver calls will overlap for both tests.
So the execution flow will go like, webdriver will execute some steps for test-1 followed by some steps for test-2, then again some steps for test-1.
Grey box testing
Ask application development to provide you with an alternative way to get authorized / get a token that is only implemented for the test and development environments and does not require changing. Consider multiple accounts for different privileges and try and test with the minimum privilege you can, for example read only. Proxy servers ...
Update the version of the Selenium Support package you are using to the same version number as the Selenium WebDriver package.
That is, if you've upgraded to Selenium WebDriver 4.0.0-rc2 and you're also using the Selenium Support package, then you need to upgrade the Selenium Support package version to 4.0.0-rc2.
What, @Daniel said would be less lines of code but you can start with an array of elements
WebElement foo = driver.findElements(...);
Then get the last element in that array
WebElement bar = foo.get(foo.size-1);
You might wanna take a look at the last-of-type css selector property (https://developer.mozilla.org/de/docs/Web/CSS/:last-of-type). That way, instead of having the overhead of finding every element, labeling them for your selenium hub, allocating space for all the elements in the RAM and then throwing them away you could do a simple driver.findElement(By....
I think its because, you are defining loadmoreElems (within the loop) after you perform the click operation. So it click on the Load More button one time because you have defined loadmoreElems outside the loop. After the 1st click you are not defining it before click operation and the previously defined loadmoreElems is no longer valid.
Define it before that ...
May be you need apply Explicit waits and try different xpath.
Apply Wait like below and try:
# Imports Required
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
wait = WebDriverWait(driver,30)
deletebutton = wait.until(EC....
With what you are attempting to do, you should be using a loop structure.
I'd recommend something like this (no guarantees on the code - I haven't worked with Java in over 20 years):
WebElement loadmore = getFluentWaitElementByXPath(loadmoreXpath, 20, driver);
// assuming "loadmore" is the button to click
// also we need to wait until the extra ...