my goal is to be able to drive a browser on my Android device without javascript injections (so no webviews + js) and automate it (scraping, posting forms, changing page, clicking buttons etc.).
I'd rather not use JS because I'd like my automation to be completely "undetectable" from websites (captchas are a different story, not my current problem).
I thought to use the WebDriver API via Selendroid but all my efforts are failing. This is the code i wrote:
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        SelendroidCapabilities caps = SelendroidCapabilities.empty();
        caps.setJavascriptEnabled(true);
        caps.setAut("com.myapp.myapp");
        caps.setLaunchActivity("com.myapp.myapp.WebViewActivity"); // activity containing a webview only
        WebDriver driver = null;
        try {
            driver = new SelendroidDriver(caps); // !! it fails here !!
        } catch (Exception e) {
            e.printStackTrace();
            return;
        }
        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
        driver.get("https://www.example.com");
        WebElement inputField = driver.findElement(By.id("my_text_field"));
        inputField.sendKeys("Selendroid");
        driver.quit();
    }
}
and this is my build.gradle file:
apply plugin: 'com.android.application'
android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "com.myapp.myapp"
        minSdkVersion 23
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'README.md'
    }
}
dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
    compile files('libs/selendroid-client-0.17.0.jar')
    compile files('libs/selendroid-standalone-0.17.0-with-dependencies.jar')
}
this is the error:
Process: com.myapp.myapp, PID: 25868
java.lang.NoSuchFieldError: No static field INSTANCE of type Lorg/apache/http/message/BasicLineFormatter; in class Lorg/apache/http/message/BasicLineFormatter; or its superclasses (declaration of 'org.apache.http.message.BasicLineFormatter' appears in /system/framework/org.apache.http.legacy.boot.jar)
   at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<init>(DefaultHttpRequestWriterFactory.java:52)
   at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<init>(DefaultHttpRequestWriterFactory.java:56)
   at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<clinit>(DefaultHttpRequestWriterFactory.java:46)
   at org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<init>(ManagedHttpClientConnectionFactory.java:72)
   at org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<init>(ManagedHttpClientConnectionFactory.java:84)
   at org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<clinit>(ManagedHttpClientConnectionFactory.java:59)
   at org.apache.http.impl.conn.PoolingHttpClientConnectionManager$InternalConnectionFactory.<init>(PoolingHttpClientConnectionManager.java:493)
   at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:149)
   at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:138)
   at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:114)
   at org.openqa.selenium.remote.internal.HttpClientFactory.getClientConnectionManager(HttpClientFactory.java:74)
   at org.openqa.selenium.remote.internal.HttpClientFactory.<init>(HttpClientFactory.java:57)
   at org.openqa.selenium.remote.internal.HttpClientFactory.<init>(HttpClientFactory.java:60)
   at org.openqa.selenium.remote.internal.ApacheHttpClient$Factory.getDefaultHttpClientFactory(ApacheHttpClient.java:251)
   at org.openqa.selenium.remote.internal.ApacheHttpClient$Factory.<init>(ApacheHttpClient.java:228)
   at org.openqa.selenium.remote.HttpCommandExecutor.getDefaultClientFactory(HttpCommandExecutor.java:96)
   at org.openqa.selenium.remote.HttpCommandExecutor.<init>(HttpCommandExecutor.java:70)
   at io.selendroid.client.SelendroidCommandExecutor.<init>(SelendroidCommandExecutor.java:77)
   at io.selendroid.client.SelendroidDriver.<init>(SelendroidDriver.java:84)
   at com.myapp.myapp.MainActivity$1.run(MainActivity.java:45)
p.s. I already tried this solution Getting NoSuchFieldError INSTANCE org/apache/http/message/BasicHeaderValueParser
suggestions?
Thanks in advance
