грубая синхронизация потока селен Java - PullRequest
0 голосов
/ 10 марта 2012

Это для тестирования предложений (ничего плохого)

Я хочу создать брутфорс-программу с Selenium 2, которая разбивает страницу с защитой от 0 до 10

У меня есть это (крошечный пример, а не реальный код) ...

public class test implements Runnable {

    static WebDriver driver;

    test() {
        StageLoader();
        Thread t = new Thread(this);
        t.start();
    }

    //starts firefox and goes to the page
    private void StageLoader() {
        driver = new FirefoxDriver();
        driver.get("http://test.com/login.php");
    }

    @Override
    public void run() {
        for (int i = 0; i <= 10; i++) {
            bruteForce(i);
        }
    }

    private void bruteForce(int i) {

        driver.findElement(
                By.name("password"))
                .sendKeys(Integer.toString(i));

        String output = driver.findElement(By.id("result")).getText();

        if (output.indexOf("sucess") != -1) {
            //stop
        } else {
            //continue
        }

    }

    public static void main(String[] args) {
        new FiberBrute();
    }
}

он работает отлично, но ему не хватает синхронизации, я хочу, чтобы он шел от 0 до 10 один за другим и продолжал только следующий, если! success,Я уже много пытался сделать это работает с параллелизмом, но мне не удалось :( Можете ли вы помочь мне немного, пожалуйста?

заранее спасибо: D

1 Ответ

0 голосов
/ 10 марта 2012

Приведенный здесь пример кода должен идти 1 к 1, но он не остановится на успехе.

@Override
public void run() {
    // Go until we run out of numbers or bruteForce comes back with 'true'
    for (int i = 0; i <= 10 && !bruteForce(i); i++);                    
}

//Returns true if it found the password
private boolean bruteForce(int i) {

    driver.findElement(
            By.name("password"))
            .sendKeys(Integer.toString(i));

    String output = driver.findElement(By.id("result")).getText();

    if (output.indexOf("sucess") != -1) {
        //stop
        return true;
    } else {
        //continue
        return false;
    }

}

Для того чтобы все 10 попыток произошли одновременно, bruteForce должен создавать потоки, чего здесь не происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...