Java 无法通过登录页
我无法通过登录页面。我正确地抓取了输入元素,填充了它们,并提交了它们,但我仍然停留在原始页面上。我不确定确切的问题在哪里,我已经尝试了.submit、.click,并模拟javascript输入来提交凭据Java 无法通过登录页,java,selenium,webdriver,htmlunit-driver,Java,Selenium,Webdriver,Htmlunit Driver,我无法通过登录页面。我正确地抓取了输入元素,填充了它们,并提交了它们,但我仍然停留在原始页面上。我不确定确切的问题在哪里,我已经尝试了.submit、.click,并模拟javascript输入来提交凭据 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { //Create driver, javascript ena
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
//Create driver, javascript enabled
WebDriver driver = new HtmlUnitDriver(true);
driver.get("https://epicmafia.com/home");
//Get parent of login form
WebElement parent = driver.findElement(By.id("login_form"));
//Get both inputs of the login form
//First is name
//Second is password
ArrayList<WebElement> children = new ArrayList<WebElement>();
for(WebElement input : parent.findElements(By.cssSelector("input")))
children.add(input);
//Fill in name
children.get(0).sendKeys("USERNAME");
//Fill in password
children.get(1).sendKeys("PASSWORD");
//Wait for good measure
driver.manage().timeouts().implicitlyWait(4, TimeUnit.SECONDS);
//Submit credentials
children.get(1).submit();
//Double check inputs are desired values
System.out.println("The username is: " + children.get(0).getAttribute("value"));
System.out.println("The password is: " + children.get(1).getAttribute("value"));
//Check if pass login page
System.out.println("End URL is: " + driver.getCurrentUrl());
driver.quit();
}
登录页面为,而成功登录后的下一个页面为
编辑:供参考:第三个子元素是前两个用户名和密码后面的实际登录按钮。应在该元素上执行提交
您可以尝试以下代码: 由于我没有凭据,单击“登录”按钮后将显示错误,您可以在相应的sendKeys命令中提供用户名和密码 要将字符序列发送到用户名和密码字段,您需要导入WebDriverWait并单击登录按钮,您可以使用以下解决方案: 代码块:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# other lines of code
driver.get("https://epicmafia.com/home")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name='user[username]']"))).send_keys("FF")
driver.find_element_by_css_selector("input[name='user[password]']").send_keys("FF")
driver.find_element_by_css_selector("input.red[value='Login']").click()
浏览器快照:
在查看了回复并进行了一些混乱之后,答案并不是抓取元素、填充元素甚至提交元素的错误。问题来自超时不工作,我可能认为是超时 我将驱动程序移动到它自己的方法kill开关,这样初始调用在被手动终止之前有无限的加载时间,而不是像我最初发布的代码那样自动终止
现在我的登录问题已经解决了,我必须研究一下为什么超时不起作用。谢谢大家的帮助 请共享单击的代码。你有什么错误吗?或者你只是没有被重定向到下一页?我已经尝试了所有这些,都没有导致下一页。请向上投票帮助您的答案,并通过单击“向下投票”按钮下方的复选标记以及答案旁边的复选标记接受答案。非常感谢。
public class FFFF {
static WebDriver driver;
public static void main(String[] args) throws InterruptedException {
System.setProperty("webdriver.chrome.driver", "D:\\Automation\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get("https://epicmafia.com/home");
driver.findElement(By.xpath("//form[@id='login_form']/descendant::input[@placeholder='username']")).sendKeys("username");
driver.findElement(By.xpath("//form[@id='login_form']/descendant::input[@placeholder='password']")).sendKeys("password");
driver.findElement(By.xpath("//form[@id='login_form']/descendant::input[@name='submit']")).click();
}
}
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# other lines of code
driver.get("https://epicmafia.com/home")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[name='user[username]']"))).send_keys("FF")
driver.find_element_by_css_selector("input[name='user[password]']").send_keys("FF")
driver.find_element_by_css_selector("input.red[value='Login']").click()