рд╕реЗрд▓реЗрдирд┐рдпрдо 4 рдореЗрдВ рд░рд┐рд╢реНрддреЗрджрд╛рд░ рд▓реЛрдХреЗрдЯрд░

рд╕реИрд▓реНрдпреВрдЯ, рдЦрд╛рдмрд░реЛрд╡рд╕реНрдХред рдЬрд╛рд╡рд╛ рдХреНрдпреВрдП рдЗрдВрдЬреАрдирд┐рдпрд░ рдХреЛрд░реНрд╕ рдХреА рд╢реБрд░реБрдЖрдд рдХреА рдкреНрд░рддреНрдпрд╛рд╢рд╛ рдореЗрдВ , рд╣рдордиреЗ рдЖрдкрдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЕрдиреБрд╡рд╛рдж рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рд╣реИред





рд░рд┐рд╢реНрддреЗрджрд╛рд░ рд▓реЛрдХреЗрдЯрд░


рд╕реЗрд▓реЗрдирд┐рдпрдо 4 рд╣рдореЗрдВ рд░рд┐рд╢реНрддреЗрджрд╛рд░ рд▓реЛрдХреЗрдЯрд░ - рд░рд┐рд▓реЗрдЯрд┐рд╡ рд▓реЛрдХреЗрдЯрд░ (рдореВрд▓ рд░реВрдк рд╕реЗ рдлреНрд░реЗрдВрдбрд▓реА рд▓реЛрдХреЗрдЯрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) рд▓рд╛рдпрд╛ред рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЕрдиреНрдп рдорджреЛрдВ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдореМрдЬреВрдж рдЖрдЗрдЯрдо рдЦреЛрдЬрдиреЗ рдореЗрдВ рдЖрдкрдХреА рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝реА рдЧрдИ рд╣реИред

рдЙрдкрд▓рдмреНрдз рд╡рд┐рдХрд▓реНрдк:

  • рдКрдкрд░ () : рдЦреЛрдЬ рдЖрдЗрдЯрдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрдЗрдЯрдо рд╕реЗ рдКрдкрд░ рд╣реИ
  • рдиреАрдЪреЗ () : рдЦреЛрдЬрд╛ рдЧрдпрд╛ рдЖрдЗрдЯрдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрдЗрдЯрдо рдХреЗ рдиреАрдЪреЗ рд╣реИ
  • .LeftOf () : рдЦреЛрдЬ рдЖрдЗрдЯрдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрдЗрдЯрдо рдХреЗ рдмрд╛рдИрдВ рдУрд░ рд╕реНрдерд┐рдд рд╣реИ
  • .RROOf () : рдЦреЛрдЬ рдЖрдЗрдЯрдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрдЗрдЯрдо рдХреЗ рджрд╛рдИрдВ рдУрд░ рд╕реНрдерд┐рдд рд╣реИ
  • рдкрд╛рд╕ () : рдЖрдк рдЬрд┐рд╕ рдЖрдЗрдЯрдо рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрдЗрдЯрдо рд╕реЗ 50 рдкрд┐рдХреНрд╕реЗрд▓ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИред рджреВрд░реА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рднрд╛рд░рд┐рдд рд╡рд┐рдзрд┐ рднреА рд╣реИред

рдпреЗ рд╕рднреА рд╡рд┐рдзрд┐рдпрд╛рдБ By рдпрд╛ WebElement рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рднрд╛рд░рд┐рдд рд╣реИрдВред

рд░рд┐рд╢реНрддреЗрджрд╛рд░ рд▓реЛрдХреЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рдЗрд╕ рдмреБрдХрд╕реНрдЯреЛрд░ рдРрдк рдХреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП , рд╣рдо рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЬрд╛рд╡рд╛ рдореЗрдВ рдЙрдиреНрдирдд рд╕реЗрд▓реЗрдирд┐рдпрдо рдХреЗ рдмрд╛рдИрдВ рдУрд░ рдХреА рдкреБрд╕реНрддрдХ рдЬрд╛рд╡рд╛ рдлреЙрд░ рдЯреЗрд╕реНрдЯрд░реНрд╕ рд╣реИред рд╕рд╛рдкреЗрдХреНрд╖ рдирд┐рд╡рд╛рд╕реА рд╣рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред


рдпрд╣рд╛рдБ


рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ pid6, рдФрд░ "Java рдлрд╝реЙрд░ рдЯреЗрд╕реНрдЯрд░реНрд╕" pid5 рджреНрд╡рд╛рд░рд╛ DOM рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд "рдЬрд╛рд╡рд╛ рдореЗрдВ рдЙрдиреНрдирдд рд╕реЗрд▓реЗрдирд┐рдпрдо" рдкреБрд╕реНрддрдХреЛрдВ рдХреЗ рд▓рд┐рдП DOM рдЯреБрдХрдбрд╝рд╛ рд╣реИ ред

рдПрдХ рд╡рд┐рдзрд┐ рдПрдХ рдРрд╕реА рд╡рд┐рдзрд┐ WebDriver::findElementрд▓реЗ рд╕рдХрддреА рд╣реИ withTagName()рдЬреЛ рдПрдХ рд╡рд╕реНрддреБ RelativeLocator.RelativeBy(рдмрд╛рдп рдХрд╛ рд╡рдВрд╢рдЬ) рд▓реМрдЯрд╛рддреА рд╣реИ ред

driver.findElement(withTagName("li")


рдпрд╣рд╛рдВ рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрдмрдВрдзрд┐рдд рд▓реЛрдХреЗрдЯрд░реЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ "рдЬрд╛рд╡рд╛ рдЯреЗрд╕реНрдЯрд░реНрд╕ рдХреЗ рд▓рд┐рдП" рдЬрд╛рд╡рд╛ рдореЗрдВ "рдЙрдиреНрдирдд рд╕реЗрд▓реЗрдирд┐рдпрдо" (pid6) рдХреЗ рдмрд╛рдИрдВ рдУрд░ рд╣реИ рдФрд░ "рд░рд┐рдпрд▓ рд╡рд░реНрд▓реНрдб рдореЗрдВ рдЯреЗрд╕реНрдЯ рдСрдЯреЛрдореЗрд╢рди" (pid1) рд╕реЗ рдиреАрдЪреЗ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рджреЛрдиреЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:

driver.findElement(withTagName("li")
                .toLeftOf(By.id("pid6"))
                .below(By.id("pid1")));

рдФрд░ рдореБрдЭреЗ рдЬрд╛рд╡рд╛ рдлреЙрд░ рдЯреЗрд╕реНрдЯрд░реНрд╕ (рдкреА 5) рдорд┐рд▓рддрд╛ рд╣реИред

@Test
public void test_book5_is_left_of_book6_and_below_book1(){
    String id = driver.findElement(withTagName("li")
            .toLeftOf(By.id("pid6"))
            .below(By.id("pid1")))
            .getAttribute("id");
 
    assertEquals(id, "pid5");
}

рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ above()рдФрд░ рддрд░реАрдХреЛрдВ toRightOf()рдЯреЗрд╕реНрдЯ рдСрдЯреЛрдореЗрд╢рди (pid2) рдХреЗ рдЕрдиреБрднрд╡ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП:

@Test
public void test_book2_is_above_book6_and_right_of_book1(){
    String id = driver.findElement(withTagName("li")
                    .above(By.id("pid6"))
                    .toRightOf(By.id("pid1")))
            .getAttribute("id");
 
    assertEquals(id, "pid2");
}

рдпрд╣ рдХрд╛рдо рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ?


рдореИрдВ рдХреЗрд╡рд▓ " toLeftOf (By.id (" pid6 ")) рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ" рдЬрд╛рд╡рд╛ рдЯреЗрд╕реНрдЯрд░реНрд╕ рдХреЗ рд▓рд┐рдП "рдирд╣реАрдВ рдЦреЛрдЬ рд╕рдХрд╛ ред рдЕрдХреЗрд▓реЗ, рд╡рд╣ рд░рд┐рдпрд▓ рд╡рд░реНрд▓реНрдб (pid1) рдореЗрдВ рдЯреЗрд╕реНрдЯ рдСрдЯреЛрдореЗрд╢рди рд▓реМрдЯрд╛рдПрдЧрд╛ред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ driver.findElement()DOM рдХреА рдЬрдбрд╝ рд╕реЗ рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИ, рдФрд░ <li>рдЬрд╛рд╡рд╛ рдореЗрдВ рдЙрдиреНрдирдд рд╕реЗрд▓реЗрдирд┐рдпрдо рдХреЗ рдмрд╛рдИрдВ рдУрд░ рдкрд╣рд▓рд╛ рдЖрдЗрдЯрдо рд░рд┐рдпрд▓ рд╡рд░реНрд▓реНрдб рдореЗрдВ рдЯреЗрд╕реНрдЯ рдСрдЯреЛрдореЗрд╢рди рд╣реИред

рд╕реЗрд▓реЗрдирд┐рдпрдо getBoundingClientRect()рд░рд┐рд╢реНрддреЗрджрд╛рд░ рддрддреНрд╡реЛрдВ рдХреА рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ ред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рддрддреНрд╡ рдЧреБрдгреЛрдВ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рджрд╛рдПрдБ, рдмрд╛рдПрдБ, рдиреАрдЪреЗ рдФрд░ рдКрдкрд░ред

рдЗрди рддреАрди рдкреБрд╕реНрддрдХреЛрдВ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд░рд┐рдпрд▓ рд╡рд░реНрд▓реНрдб рдореЗрдВ рдЯреЗрд╕реНрдЯ рдСрдЯреЛрдореЗрд╢рди (pid1) рдФрд░ рдЬрд╛рд╡рд╛ рдлреЙрд░ рдЯреЗрд╕реНрдЯрд░реНрд╕ (pid5) рджреЛрдиреЛрдВ рдореЗрдВ рд╕рдорд╛рди рдПрдХреНрд╕-рдЕрдХреНрд╖ рд╕реНрдерд┐рддрд┐ рд╣реИред



рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╡реЗ рдЬрд╛рд╡рд╛ рдлреЙрд░ рдЯреЗрд╕реНрдЯрд░реНрд╕ рдХреЗ рдмрд╛рдИрдВ рдУрд░ рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЯреЗрд╕реНрдЯ рдСрдЯреЛрдореЗрд╢рди (pid1) рдкрд╣рд▓рд╛ рдкрд╛рдпрд╛ рдЧрдпрд╛ред

рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдмрд┐рдВрджреБ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд╡реНрдпреВрдкреЛрд░реНрдЯ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИред рдпрджрд┐ рдореИрдВ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рддрд╛ рдерд╛, рддреЛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рд╡реЗ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреЗ рдереЗ рдХреНрдпреЛрдВрдХрд┐ рдкреБрд╕реНрддрдХреЗрдВ рдЕрдм рдЕрдиреНрдп рдкреБрд╕реНрддрдХреЛрдВ рдХреЗ рдмрд╛рдИрдВ / рджрд╛рдИрдВ рдУрд░ рдирд╣реАрдВ рд╣реИрдВ:



рдЬрдм рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рдерд╛ рддреЛ рдореИрдВ рдорд┐рддреНрд░рд╡рдд рдирд┐рд╡рд╛рд╕рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ рдерд╛ рдЙрдиреНрд╣реЗрдВ рдЗрд╕ ToDo рдРрдк рдореЗрдВ ред



рдореИрдВрдиреЗ toLeftOf()"рдЕрд▓рд╡рд┐рджрд╛ рджреБрдирд┐рдпрд╛" рддрддреНрд╡ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдЗрдирдкреБрдЯ рд╕реНрд╡рд┐рдЪ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА ред рдиреЗрддреНрд░рд╣реАрди, рдпрд╣ рдЗрдирдкреБрдЯ рд╕реНрд╡рд┐рдЪ "рдЕрд▓рд╡рд┐рджрд╛ рджреБрдирд┐рдпрд╛" рд▓реЗрдмрд▓ рдХреЗ рдмрд╛рдИрдВ рдУрд░ рд╕реНрдерд┐рдд рд╣реИред рдпрд╣рд╛рдБ рдбреЛрдо рдореЗрдВ рдЗрд╕ div рд╣реИ:

<div class="view" data-reactid=".0.1.2.$645c3b67-884e-4e4f-aecd-8f9367e670f8.0">
    <input class="toggle" type="checkbox" data-reactid=".0.1.2.$645c3b67-884e-4e4f-aecd-8f9367e670f8.0.0">
    <label data-reactid=".0.1.2.$645c3b67-884e-4e4f-aecd-8f9367e670f8.0.1">goodbye world</label>
    <button class="destroy" data-reactid=".0.1.2.$645c3b67-884e-4e4f-aecd-8f9367e670f8.0.2"></button>
</div>

рдпрд╣рд╛рдБ рд╡рд╣ рдХреЛрдб рд╣реИ рдЬрд┐рд╕рдХрд╛ рдкреНрд░рдпреЛрдЧ рдореИрдВрдиреЗ рд▓реЗрдмрд▓ рдХреЗ рдмрд╛рдИрдВ рдУрд░ рдЗрдирдкреБрдЯ рддрддреНрд╡ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдерд╛:

driver.findElement(withTagName("input")
      .toLeftOf(By.xpath("//label[text()='goodbye world']")))
      .click();

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдпрд╛ рдерд╛: рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдПрдХ рджреГрд╢реНрдп рдХреЗ рдмрд╛рдИрдВ рдУрд░ рд╣реИ , рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рд╣реИред рдореИрдВрдиреЗ рдЗрди рджреЛрдиреЛрдВ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ , рдФрд░ рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдУрд╡рд░рд▓реИрдк рдХрд░рддреЗ рд╣реИрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЙрди рджреЛрдиреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ x 838 рд╣реИ, рдЗрд╕рд▓рд┐рдП рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдмрд╛рдИрдВ рдУрд░ рдирд╣реАрдВ рд╣реИ ред рдФрд░ рдЬрдм рдореИрдВ рддрддреНрд╡ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдЕрдм рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддрддреНрд╡ рдХреЛ рдУрд╡рд░рд▓реИрдк рдХрд░рддрд╛ рд╣реИ ред <img src = " habrastorage.org/webt/hj/aa/46/hjaa46ps-of5_hhlplqaldclc7s.png " /

org.openqa.selenium.NoSuchElementException: Cannot locate an element using [unknown locator]

<input><label>getBoundingClientRect()<input><label>



<label><input>


рдиреЛрдЯ : рдпрд╣ рд╕реЗрд▓реЗрдирд┐рдпрдо рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдПрдХ рдЕрд▓реНрдлрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рдореИрдВрдиреЗ рд╕реЗрд▓реЗрдирд┐рдпрдо рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореИрдиреЗрдЬрд░ рд╕рд╛рдЗрдорди рд╕реНрдЯреАрд╡рд░реНрдЯ рд╕реЗ рдмрд╛рдд рдХреА рдФрд░ рдкрд╛рдпрд╛ рдХрд┐ рдлреАрдбрдмреИрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред

рдмрд╕ рдЗрддрдирд╛ рд╣реАред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд░рд╛рд╣ рдкрд░ !

All Articles