我试图制作一个在java中使用Selenium登录http://us1.hotornot.com/的程序(bot)。
我想使用"使用电子邮件登录"网页上的选项 - 将鼠标悬停在带有文字"或"的按钮上,然后会出现一个下拉选项集,其中包含一个选项"使用邮件登录"点击此按钮后会出现一个对话框,可以输入详细信息(检查网站应该更清楚)。我无法弄清楚如何打开此对话框并使用selenium输入数据(虽然我知道如何在文本框中正常输入文本)。
我的意图是下载用户图像(我想我可以自己解决这个问题)并将这些数据用于机器学习项目 - 许多可用的图像库没有我需要的规范吸引力评级。
非常感谢任何帮助。
谢谢,
汤姆
答案 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!