[java-idp-integration-tests] 03/03: Clear cached username if necessary
Tom Zeller
tzeller at dragonacea.biz
Fri Jan 12 14:35:51 UTC 2024
This is an automated email from the git hooks/post-receive script.
tzeller pushed a commit to branch main
in repository java-idp-integration-tests.
View the commit online:
http://git.shibboleth.net/view/?p=java-idp-integration-tests.git;a=commit;h=582a120f3bc9ded849cd0cddcdfdc7cf83e0bd9a
commit 582a120f3bc9ded849cd0cddcdfdc7cf83e0bd9a
Author: Tom Zeller <tzeller at dragonacea.biz>
AuthorDate: Fri Jan 12 08:35:22 2024 -0600
Clear cached username if necessary
https://shibboleth.atlassian.net/browse/IDP-2220
---
.../idp/integration/tests/BaseIntegrationTest.java | 38 ++++++++++++++++++----
1 file changed, 31 insertions(+), 7 deletions(-)
diff --git a/src/test/java/net/shibboleth/idp/integration/tests/BaseIntegrationTest.java b/src/test/java/net/shibboleth/idp/integration/tests/BaseIntegrationTest.java
index f685d70..4b1ab7d 100644
--- a/src/test/java/net/shibboleth/idp/integration/tests/BaseIntegrationTest.java
+++ b/src/test/java/net/shibboleth/idp/integration/tests/BaseIntegrationTest.java
@@ -1942,18 +1942,34 @@ public abstract class BaseIntegrationTest {
/**
* <ul>
- * <li>Input username</li>
- * <li>Input password</li>
+ * <li>Send username</li>
+ * <li>Send password</li>
* <li>Submit form.</li>
* </ul>
*
+ * Clear cached username if it is not the given username.
+ *
* @param user username
*/
public void login(final @Nonnull String user) {
new WebDriverWait(driver, Duration.ofSeconds(10)).until(driver -> driver.findElement(By.name("j_username")));
+ // Username form input field
final WebElement username = driver.findElement(By.name("j_username"));
+ // Password form input field
final WebElement password = driver.findElement(By.name("j_password"));
- username.sendKeys(user);
+ // Cached username
+ final String cachedUser = username.getAttribute("value");
+ log.trace("Cached username '{}'", username.getAttribute("value"));
+ if (cachedUser == null) {
+ // Username form field is empty, so enter the username
+ username.sendKeys(user);
+ } else {
+ // Clear cached username if it is not the given username
+ if (!user.equals(cachedUser)) {
+ username.clear();
+ username.sendKeys(user);
+ }
+ }
password.sendKeys("changeit");
submitForm();
}
@@ -2236,19 +2252,27 @@ public abstract class BaseIntegrationTest {
boolean isSelected = element.isSelected();
log.trace("ClickWorkaround element '{}' isSelected '{}'", element, element.isSelected());
try {
+ // Try clicking element
+ log.trace("Attempting to click element '{}'", element);
element.click();
} catch (ElementNotInteractableException e) {
- log.trace("Unable to click element {}, will try again", element);
+ log.trace("Unable to click element '{}', will try again", element);
final Actions action = new Actions(driver);
- action.moveToElement(element).click().build().perform();
- log.trace("ClickWorkaround element'{}' isSelected '{}'", element, element.isSelected());
+ // Try moving to element and clicking, element must be in viewport
+ try {
+ log.trace("Attempting to move to element and click '{}'", element);
+ action.moveToElement(element).click().perform();
+ } catch (org.openqa.selenium.interactions.MoveTargetOutOfBoundsException e1) {
+ log.trace("Unable to move to element '{}', will try again", element);
+ }
// If element is still not clicked, try JavaScript
if ((isSelected && element.isSelected()) || (!isSelected && !element.isSelected())) {
- log.trace("Unable to click element '{}', will try JavaScript", element);
+ log.trace("Attempting JavaScript to click element '{}'", element);
final JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].click();", element);
}
}
+ log.trace("ClickWorkaround element '{}' isSelected '{}'", element, element.isSelected());
// If element is not clicked, throw runtime exception
if ((isSelected && element.isSelected()) || (!isSelected && !element.isSelected())) {
log.error("Unable to click element '{}'", element);
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list