在Java中使用Selenium登录热门或不登录并获取照片

时间:2014-04-03 18:34:49

标签: java selenium

我试图制作一个在java中使用Selenium登录http://us1.hotornot.com/的程序(bot)。

我想使用"使用电子邮件登录"网页上的选项 - 将鼠标悬停在带有文字"或"的按钮上,然后会出现一个下拉选项集,其中包含一个选项"使用邮件登录"点击此按钮后会出现一个对话框,可以输入详细信息(检查网站应该更清楚)。我无法弄清楚如何打开此对话框并使用selenium输入数据(虽然我知道如何在文本框中正常输入文本)。

我的意图是下载用户图像(我想我可以自己解决这个问题)并将这些数据用于机器学习项目 - 许多可用的图像库没有我需要的规范吸引力评级。

非常感谢任何帮助。

谢谢,

汤姆

2 个答案:

答案 0 :(得分:0)

请务必阅读“热门或非热门使用条款”。我会说你需要使用无头浏览器进行这种类型的屏幕抓取。使用PhantomJS的Java语言查看编码测试。您也可以使用标准的Firefox webdriver进行非无头操作,但速度会慢一些。取决于你在做什么。使用Jenkins安排工作。

答案 1 :(得分:0)

请确保点击帖子左侧的复选框,在确认其有效后将其标记为已接受的答案。

public class Main {

    static WebDriver driver = new FirefoxDriver();

    public static void main(String[] args) {
        hotOrNotLogin("emailAddress", "password");
    }

    public static void hotOrNotLogin(String emailAddress, String password) {

        final String OR_SPINNTER_CLASSNAME = "dropdown-link";
        final String SIGNUP_BY_EMAIL_CLASSNAME = "a.js-ovl-open.b-link";
        final String EMAIL_INPUT_NAME = "email";
        final String PASSWORD_INPUT_NAME = "password";
        WebDriverWait wait = new WebDriverWait(driver, 8);

        driver.get("http://hotornot.com/");

        //move cursor to the Or spinner to reveal the drop-down
        wait.until(ExpectedConditions.visibilityOfElementLocated(By.className(OR_SPINNTER_CLASSNAME)));
        WebElement orSpinner = driver.findElement(By.className(OR_SPINNTER_CLASSNAME));
        Actions actions = new Actions(driver);
        actions.moveToElement(orSpinner);
        actions.perform();

        //sign in with email
        driver.findElement(By.cssSelector(SIGNUP_BY_EMAIL_CLASSNAME)).click();
        driver.findElement(By.name(EMAIL_INPUT_NAME)).sendKeys(emailAddress);
        driver.findElement(By.name(PASSWORD_INPUT_NAME)).sendKeys(password + Keys.RETURN);

    }
}

我必须在“//使用电子邮件登录”中添加一些wait.until以使其与HtmlUnitDriver一起使用。您可能需要根据计算机和连接速度来调整时间。

也欢迎来到StackOverflow!