You are mixing up two related, but nevertheless different things:
white box testing
unit testing by using private methods
The reasons for writing or not writing unit test only using public methods have been discussed numerous times before on this site, for example here or here. I don't think it makes sense to repeat those arguments.
White box testing, however, does not mean to use private members for setting up a test. It means to design a test specificially to achieve full code coverage and/or branch coverage, and this is typically done by using just public members. So white box testing requires to know the internals of a class, but does not directly utilize access to the internals. This lets the designer of a component in a situation where he can still change the implementation details without worrying too much about the tests.
This kind of testing is not discouraged in OOP, quite the opposite - Test Driven Development is a form of testing which actually leads to these kind of tests: whenever one wants to add a new feature to a function, class of component, one writes a "red" test first, adds some new code or changes some existing code to add the feature, and since the new test now becomes "green", it is obvious the added or changed code must have been covered by the test.
To your example: if removeElement is a public method of a "list" module, and not a member of a class, I would still recommend the way of testing using only the public interface of that module, just as if it was a class. Your example of a broken addElement or containsElement is contrived. In reality, one would design such a test by
- creating a new list
- assert the list does not contain element X
- add an element X to the list
- assert the list nows contain element X
- remove the element X from the list
- assert the list does not contain element X any more
which is all possible using public methods.
If addElement or containsElement were broken, the above test sequence makes sure the test signals this (and does not give a false positive for removeElement).