I solved this maybe on the stupid way. But hawe in mind that I am not in test environment and I practicing automatization of tests. So this is my solution:
Beside using
public void notABot( ) { WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds( 15 )); wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath("//iframe[starts-with(@name,'a-') and starts-with (@src, 'https://www.google.com/recaptcha')]"))); wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//div [ @class = 'recaptcha-checkbox-border']"))).click( ); driver.switchTo().defaultContent(); }
this, I also added custom send keys method
public void inputEmail( ) { inputEmail.click( ); String email = Strings.EMAIL_FOR_SIGNUP; for (int i = 0; i < email.length(); i++) { char c = email.charAt(i); String s = new StringBuilder( ).append( c ).toString( ); inputEmail.sendKeys( s ); sleepSendKeys( ); } }
Sleep is 300 millis. In 96 procent time I manage to cheat google reCaptcha that actually human is login to the page. Its work for me