Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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
Java 无法通过登录页_Java_Selenium_Webdriver_Htmlunit Driver - Fatal编程技术网

Java 无法通过登录页

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

我无法通过登录页面。我正确地抓取了输入元素,填充了它们,并提交了它们,但我仍然停留在原始页面上。我不确定确切的问题在哪里,我已经尝试了.submit、.click,并模拟javascript输入来提交凭据

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()