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

Discussion (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.