def string_visible_contains(class_name, value)
      value = %("#{value}")
      if class_name == '*'
        return (resource_id(value, "new UiSelector().resourceId(#{value});") +
          "new UiSelector().descriptionContains(#{value});" \
          "new UiSelector().textContains(#{value});")
      end

      class_name = %("#{class_name}")
      resource_id(value, "new UiSelector().className(#{class_name}).resourceId(#{value});") +
        "new UiSelector().className(#{class_name}).descriptionContains(#{value});" \
        "new UiSelector().className(#{class_name}).textContains(#{value});"
    end
def string_visible_contains(class_name, value)
      value = %("#{value}")
      if class_name == '*'
        return (resource_id(value, "new UiSelector().resourceId(#{value});") +
          "new UiSelector().descriptionContains(#{value});" \
          "new UiSelector().textContains(#{value});")
      end

      class_name = %("#{class_name}")
      resource_id(value, "new UiSelector().className(#{class_name}).resourceId(#{value});") +
        "new UiSelector().className(#{class_name}).descriptionContains(#{value});" \
        "new UiSelector().className(#{class_name}).textContains(#{value});"
    end
Returns a string that matches the first element that contains value
 For automationName is Appium
 example: string_visible_contains 'UIATextField', 'sign in'
 note for XPath: https://github.com/appium/ruby_lib/pull/561

 @param class_name [String] the class name for the element
 @param value [String] the value to search for
 @return [String]