Too often I find myself building selectors with string manipulation (split, search, replace, concat, +, join).
Good or bad?
Too often I find myself building selectors with string manipulation (split, search, replace, concat, +, join).
Good or bad?
What's wrong with that? What are the alternatives — just hardcoding them as single strings? But you may use conventions on your site for how the layout is organized. If you just define the selector components in one place, and use it to build a selector, sounds like this would be less hassle than going through all the code and doing search-replace everywhere it shows up.
I'd say it's good assuming you have the strings otherwise organized (defined in one place, used in several places).
This is somewhat unrelated to your question, but:
One thing I would recommend is to be cautious with descendant-based or child selectors (e.g.: 'div.product > span.price'). Often, UI parts are being reorganized, moved around or wrapped with something else. When it happens, descendant-based selectors break.
Another thing to keep in mind is that attribute-based selectors (e.g.: 'input[value="Login"]') are often fragile when dealing with localized content (if attribute values are localized).