Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Selendroid作为web刮刀_Android_Selenium_Web Scraping_Selendroid - Fatal编程技术网

Android Selendroid作为web刮刀

Android Selendroid作为web刮刀,android,selenium,web-scraping,selendroid,Android,Selenium,Web Scraping,Selendroid,我打算创建一个Android应用程序,它可以无头登录一个网站,然后在维护登录会话的同时从后续页面中删除一些内容 我第一次在一个普通的Java项目中使用它,它工作得很好。但后来发现HtmlUnit与Android不兼容 然后,我通过向登录表单发送HTTP“POST”请求来尝试使用该库。但由于JSoup不支持JavaScript,因此生成的页面无法完全加载 然后,有人建议我看看哪一个是真正的android测试自动化框架。但我真正需要的是一个支持JavaScript和Android的Html解析器。我

我打算创建一个Android应用程序,它可以无头登录一个网站,然后在维护登录会话的同时从后续页面中删除一些内容

我第一次在一个普通的Java项目中使用它,它工作得很好。但后来发现HtmlUnit与Android不兼容

然后,我通过向登录表单发送HTTP“POST”请求来尝试使用该库。但由于JSoup不支持JavaScript,因此生成的页面无法完全加载

然后,有人建议我看看哪一个是真正的android测试自动化框架。但我真正需要的是一个支持JavaScript和Android的Html解析器。我发现Selendroid很难理解,我甚至不知道该用哪个

  • selendroid客户端
  • selendroid单机版
  • selendroid服务器
使用,代码将如下所示。但是有人能给我看一个类似的Selendroid代码示例吗

    WebDriver driver = new FirefoxDriver();
    driver.get("https://mail.google.com/");

    driver.findElement(By.id("email")).sendKeys(myEmail);
    driver.findElement(By.id("pass")).sendKeys(pass);

    // Click on 'Sign In' button
    driver.findElement(By.id("signIn")).click();
而且

  • 要将哪些依赖项添加到我的Gradle.Build文件
  • 要导入哪些Selendroid库

  • 我建议您使用WebDrivero,因为您想使用Javascript。 它使用NodeJs,因此很容易需要其他插件来删除HTML


    Appium也是一种替代方案,但它更注重前端测试。

    我从未使用过
    Selendroid
    ,所以我不太确定,但通过网络搜索,我发现了这一点,根据它,我想您从
    Selenium
    Selendroid
    的代码翻译应该是:

    翻译代码(在我看来)

    您需要在项目中添加哪些内容

    似乎您必须将
    Selendroid独立jar文件添加到项目中。如果您对如何在Android项目中添加外部jar有疑问,您可以看到以下问题:

    您可以在这里下载
    jar文件

    此外,仅仅将
    jar文件添加到项目中似乎是不够的。您还应该添加您拥有的standalone版本的
    selendroid客户端jar文件

    您可以从这里下载:


    我希望它会对你有帮助

    不幸的是,我没有让Selendroid工作。但我找到了一个解决办法,可以通过使用Android内置的WebView和启用JavaScript来抓取动态内容

    mWebView = new WebView();
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.addJavascriptInterface(new HtmlHandler(), "HtmlHandler");
    
    mWebView.setWebViewClient(new WebViewClient() {
       @Override
       public void onPageFinished(WebView view, String url) {
           super.onPageFinished(view, url);
    
           if (url == urlToLoad) {
           // Pass html source to the HtmlHandler
           WebView.loadUrl("javascript:HtmlHandler.handleHtml(document.documentElement.outerHTML);");
    
       }
    });
    
    JS方法
    document.documentElement.outerHTML
    将检索加载的url中包含的完整html。然后,检索到的html字符串被发送到HtmlHandler类中的handleHtml方法

    class HtmlHandler {
            @JavascriptInterface
            @SuppressWarnings("unused")
            public void handleHtml(String html) {
                // scrape the content here
    
            }
        }
    

    您可以使用Jsoup之类的库从html字符串中提取必要的内容。

    是否需要启动/停止Selendroid服务器才能使用驱动程序?正如我在回答中所说,我从未使用过Selendroid
    ,我只是收集了所有的信息并把它们放在一个答案中,所以我不能确认我所说的是真的,但这似乎是必要的,正如官方页面所说:
    运行selendroid独立服务器
    。这里有我在视频演示中看到的源代码:这似乎引发了错误:错误:任务执行失败“:app:preDexDebug”。>com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:process'command'/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin/Java''以非零出口值结束。请尝试以下问题:,我已经尝试了所有这些解决方案,但都没有成功。你确定WebDrivero可以用于android web报废WebDrivero可以处理android以确保此解决方案有效,但当我尝试在具有多个重定向的网站上实施此解决方案时,即使我比较url,重定向会将页面转到并通过同一url,我使用过计数器,但似乎不知道页面何时完全加载。
    class HtmlHandler {
            @JavascriptInterface
            @SuppressWarnings("unused")
            public void handleHtml(String html) {
                // scrape the content here
    
            }
        }