Skip to content

Added section on ByAll #1939

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
Sep 17, 2024
Merged

Added section on ByAll #1939

merged 10 commits into from
Sep 17, 2024

Conversation

shbenzer
Copy link
Contributor

@shbenzer shbenzer commented Sep 11, 2024

User description

Added a section on ByAll to Locators

Description

Added section ByAll to Locators
Added java example to locators.java
updated ByChained examples based on new example code lines
propagated changes to all translations

Motivation and Context

increase comprehensiveness of documentation

Types of changes

  • Change to the site (I have double-checked the Netlify deployment, and my changes look good)
  • Code example added (and I also added the example to all translated languages)
  • Improved translation
  • Added new translation (and I also added a notice to each document missing translation)

Checklist

  • I have read the contributing document.
  • I have used hugo to render the site/docs locally and I am sure it works.

PR Type

Documentation, Enhancement


Description

  • Added a new section on the ByAll class to the locators documentation, explaining its usage and providing examples.
  • Updated the ByChained examples to reflect new code lines and improve clarity.
  • Enhanced the Java test suite by adding a new test method ByAllTest to demonstrate the usage of the ByAll locator.
  • Added a new dependency for the Scala library in the Java project's pom.xml.
  • Propagated documentation changes to multiple translations including Japanese, Portuguese, and Chinese.

Changes walkthrough 📝

Relevant files
Dependencies
pom.xml
Add Scala library dependency to Java project                         

examples/java/pom.xml

  • Added a new dependency for Scala library version 2.13.0.
+6/-0     
Enhancement
LocatorsTest.java
Add ByAll locator test example in Java                                     

examples/java/src/test/java/dev/selenium/elements/LocatorsTest.java

  • Imported ByAll class.
  • Added ByAllTest method to demonstrate usage of ByAll.
  • +19/-0   
    Documentation
    locators.en.md
    Document ByAll class and update ByChained examples             

    website_and_docs/content/documentation/webdriver/elements/locators.en.md

  • Added documentation for ByAll class.
  • Updated ByChained example references.
  • +28/-4   
    locators.ja.md
    Document ByAll class and update ByChained examples in Japanese

    website_and_docs/content/documentation/webdriver/elements/locators.ja.md

  • Added documentation for ByAll class.
  • Updated ByChained example references.
  • +27/-3   
    locators.pt-br.md
    Document ByAll class and update ByChained examples in Portuguese

    website_and_docs/content/documentation/webdriver/elements/locators.pt-br.md

  • Added documentation for ByAll class.
  • Updated ByChained example references.
  • +27/-3   
    locators.zh-cn.md
    Document ByAll class and update ByChained examples in Chinese

    website_and_docs/content/documentation/webdriver/elements/locators.zh-cn.md

  • Added documentation for ByAll class.
  • Updated ByChained example references.
  • +27/-3   

    💡 PR-Agent usage:
    Comment /help on the PR to get a list of all available PR-Agent tools and their descriptions

    Copy link

    netlify bot commented Sep 11, 2024

    👷 Deploy request for selenium-dev pending review.

    Visit the deploys page to approve it

    Name Link
    🔨 Latest commit e8cd71d

    @qodo-merge-pro qodo-merge-pro bot added documentation Improvements or additions to documentation enhancement New feature or request labels Sep 11, 2024
    Copy link
    Contributor

    PR Reviewer Guide 🔍

    ⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
    🧪 PR contains tests
    🔒 No security concerns identified
    ⚡ Key issues to review

    Possible Bug
    The ByAllTest method is not annotated as a test method, which may prevent it from being executed as part of the test suite.

    Resource Leak
    The WebDriver instance is not closed after use, which may lead to resource leaks.

    Typo
    There is a typo in the word "mach" which should be "match" in the ByAll section.

    Copy link
    Contributor

    PR Code Suggestions ✨

    CategorySuggestion                                                                                                                                    Score
    Best practice
    Ensure proper resource management by using a try-with-resources statement for the WebDriver instance

    Consider using a try-with-resources statement to ensure that the WebDriver instance
    is properly closed after use, even if an exception occurs.

    examples/java/src/test/java/dev/selenium/elements/LocatorsTest.java [17-19]

    -WebDriver driver = new ChromeDriver();
    -// Navigate to Url
    -driver.get("https://www.selenium.dev/selenium/web/login.html");
    +try (WebDriver driver = new ChromeDriver()) {
    +    // Navigate to Url
    +    driver.get("https://www.selenium.dev/selenium/web/login.html");
    +    
    +    // Rest of the test code...
    +}
     
    Suggestion importance[1-10]: 9

    Why: This suggestion addresses a significant best practice by ensuring that the WebDriver instance is properly closed, which is crucial for resource management and preventing potential memory leaks.

    9
    Possible issue
    Add error handling to ensure the expected number of elements are found before interacting with them

    Consider adding error handling for the case where the expected number of elements is
    not found. This can be done by checking the size of the login_inputs list before
    accessing its elements.

    examples/java/src/test/java/dev/selenium/elements/LocatorsTest.java [23-27]

     List<WebElement> login_inputs = driver.findElements(example);
     
    -//send them both input
    -login_inputs.get(0).sendKeys("username");
    -login_inputs.get(1).sendKeys("password");
    +if (login_inputs.size() == 2) {
    +    login_inputs.get(0).sendKeys("username");
    +    login_inputs.get(1).sendKeys("password");
    +} else {
    +    throw new IllegalStateException("Expected 2 login input fields, but found " + login_inputs.size());
    +}
     
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: This suggestion improves robustness by adding error handling, which is important for preventing runtime errors when the expected elements are not found.

    8
    Enhancement
    Improve test reliability by adding an explicit wait for the elements to be present before interacting with them

    Consider adding a wait condition to ensure that the elements are present and
    interactable before attempting to interact with them. This can help improve the
    test's reliability, especially on slower systems or networks.

    examples/java/src/test/java/dev/selenium/elements/LocatorsTest.java [23-27]

    -List<WebElement> login_inputs = driver.findElements(example);
    +WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
    +List<WebElement> loginInputs = wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(example));
     
     //send them both input
    -login_inputs.get(0).sendKeys("username");
    -login_inputs.get(1).sendKeys("password");
    +loginInputs.get(0).sendKeys("username");
    +loginInputs.get(1).sendKeys("password");
     
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: Adding an explicit wait condition enhances test reliability, especially in environments with variable load times, by ensuring elements are ready for interaction.

    8
    Maintainability
    Improve code readability by using more descriptive variable names

    Consider using more descriptive variable names to improve code readability. For
    example, rename example to loginFieldsLocator to better reflect its purpose.

    examples/java/src/test/java/dev/selenium/elements/LocatorsTest.java [22-23]

    -By example = new ByAll(By.id("password-field"), By.id("username-field"));
    -List<WebElement> login_inputs = driver.findElements(example);
    +By loginFieldsLocator = new ByAll(By.id("password-field"), By.id("username-field"));
    +List<WebElement> loginInputs = driver.findElements(loginFieldsLocator);
     
    • Apply this suggestion
    Suggestion importance[1-10]: 7

    Why: Using descriptive variable names enhances code readability and maintainability, making it easier for developers to understand the code's purpose.

    7

    Copy link
    Member

    @harsha509 harsha509 left a comment

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    Thank you @shbenzer !

    @harsha509 harsha509 merged commit 6c6d153 into SeleniumHQ:trunk Sep 17, 2024
    9 checks passed
    selenium-ci added a commit that referenced this pull request Sep 17, 2024
    * added section on ByAll
    
    * Update locators.en.md
    
    * Update locators.ja.md
    
    * Update locators.en.md
    
    * Update locators.pt-br.md
    
    * Update locators.zh-cn.md
    
    * removed erroneous dependency
    
    * Update pom.xml 6c6d153
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Labels
    documentation Improvements or additions to documentation enhancement New feature or request Review effort [1-5]: 2
    Projects
    None yet
    Development

    Successfully merging this pull request may close these issues.

    2 participants