DEV Community

n350071🇯🇵
n350071🇯🇵

Posted on

[Capybara] find('input').set will have not done!

🔗 Parent Note

🤔 Situation

I have like this HTML and want to set a value into it.

 <div class="bootstrap-dialog-message"> <input type="text" class="form-control"> </div> 
Enter fullscreen mode Exit fullscreen mode

😅 set finishes although it's not completed!

When capybara try to input the email,

 find('input').set('loooooooooooooooooong@email.com') 
Enter fullscreen mode Exit fullscreen mode

the results were like this. it's kind of random error.

 1: loooo 2: loooooooooooooooooong@email.com 3: loooooooooooooooooong@e . . 
Enter fullscreen mode Exit fullscreen mode

👍 Fix it!

Using Until

There is a method until ~ end. You can try again until the condition will succeed.

 until find('input') == 'loooooooooooooooooong@email.com' find('input').set('loooooooooooooooooong@email.com') end 
Enter fullscreen mode Exit fullscreen mode

Using 10.times

 10.times do find('input').set('loooooooooooooooooong@email.com') break if find('input') == 'loooooooooooooooooong@email.com' end 
Enter fullscreen mode Exit fullscreen mode

Top comments (1)

Collapse
 
sergioprats1 profile image
Sergio Prats López

In my case I was only able to write four characters and when I used larger strings I was getting the Selenium::WebDriver::Error::ElementNotInteractableError exception.