Selenium、Java、屏幕截图和点击按钮有问题

Selenium、Java、屏幕截图和点击按钮有问题,java,button,selenium-webdriver,click,Java,Button,Selenium Webdriver,Click,这是关于Selenium和Click的另一个问题。我已经挣扎了大约两天,无法让它工作-我已经在互联网上尝试了答案,现在我需要一个共同的努力。提前谢谢 我在以下网站上工作-如果你想回顾我的步骤,这可能会有所帮助 我正在尝试填写登录表单,然后单击登录并查看答案页面 这是我的密码: import java.io.File; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.Writer; import ja

这是关于Selenium和Click的另一个问题。我已经挣扎了大约两天,无法让它工作-我已经在互联网上尝试了答案,现在我需要一个共同的努力。提前谢谢

我在以下网站上工作-如果你想回顾我的步骤,这可能会有所帮助

我正在尝试填写登录表单,然后单击登录并查看答案页面

这是我的密码:

import java.io.File;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.Writer;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.support.ui.Select;
public class toJava {
        public static void main(String[] args) {
                System.setProperty("webdriver.gecko.driver","/home/tallen/RTI/lib/geckodriver/geckodriver");
                WebDriver driver = new FirefoxDriver();
                driver.get("http:144.76.109.38/peTEST");
                File SF2 = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
                try{
                    FileUtils.copyFile(SF2, new File("./out-004.png"));
                }catch(IOException ioe){
                        System.out.println("There was an IO error");
                }
                driver.findElement(By.id("user_login_name")).click();
                WebElement WE4 = driver.findElement(By.id("user_login_name"));
                WE4.sendKeys("Superuser");
                driver.findElement(By.id("user_password")).click();
                WebElement WE6 = driver.findElement(By.id("user_password"));
                WE6.sendKeys("Jkerouac1!");
                WebElement WE7 = driver.findElement(By.xpath(".//*[@type='button'][@onclick='login()'][@value='Login']"));
                WE7.sendKeys(Keys.ENTER);
                File SF8 = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
                try{
                        FileUtils.copyFile(SF8, new File("./out-005.png"));
                }catch(IOException ioe){
                        System.out.println("There was an IO error");
                }
                driver.quit();
        }
}
所以基本上我打开页面,截图输入用户名和密码,点击登录,然后截图

编译和运行都是干净的,没有异常,也没有问题。我甚至有两张截图。第一个屏幕截图显示登录页面-未输入任何数据。第二个屏幕截图显示了已填充的登录页面,我要单击的按钮已标记,但没有显示成功登录后将获得的“欢迎页面”。屏幕截图显示了标记的按钮,我知道我已经找到了元素。我已经在脚本中给出了登录信息,以防您想先试用Selenium

为什么登录按钮没有被“点击”。我试过点击、执行等,但都没有用。我甚至尝试过隐式等待——但仍然没有

我尝试过高级使用交互,但仍然一无所获

我对Selenium和Java非常陌生,我希望这只是我忽略的一些愚蠢的东西。但是在浏览了网络之后,那里的解决方案就没有什么帮助了

我正在研究Debian-70-Wheezy-64-LAMP

我的Selenium库来自client-combined-3.0.1-nodeps.jar

我的Geckodriver是v0.11.1-linux64


谢谢你的帮助

嗨,
我不知道这是否会导致问题,但无论如何,对于登录按钮,我会使用它 WE7.click(); 在您试图对web元素采取操作时,如果页面未完全加载,这种验证会有所帮助。如果元素未就绪,您将单击它而不会出错,但它将无法工作


希望这对你也有用

假设单击登录按钮的语句是
WE7.sendKeys(Keys.ENTER)
,为什么要向按钮发送一个ENTER键,而不是像调用
user\u login\u name
user\u password
字段那样调用按钮上的
click()
?我不一定说它错了(我不知道,也没有检查),但我只是
click()
it。另外,为什么要在
user\u login\u name
user\u password
字段上调用
click()
?只需向他们发送钥匙。嗨,桑提比洛斯-这只是一种进化。我尝试了click(),但没有成功。我在网上的其他地方看到了这个提示,所以我尝试了一下。它可以工作——也就是说,它不会产生任何问题,但屏幕截图仍然不正确,这意味着单击没有成功。谢谢嘿,谢谢-我要试试这个。我需要一些时间来尝试一下,我会尽快告诉你们结果。嘿,弗佩尔,我需要更多的帮助,可能是因为我太笨了。我看了一下在我的机器上运行的firefox版本——Mozilla firefox 45.6.0。(我在Debian Wheezy服务器上运行。抱歉-…看到这是比46版旧的版本,我决定尝试一下你的建议。我注释掉了system set属性行,无法运行,因为我找不到firefox。因此,我只是将该行复制到了设为/usr/bin/firefox,认为它指向firefox可执行文件。这也不起作用。如何强制我的Selenium 3 java程序与firefox而不是geckodriver对抗?您需要代码行才能访问firefox并运行它,只需确保您没有调用gecko即可。编写
WebDriver driver=new FirefoxDriver();
而不是
System.setProperty(“WebDriver.gecko.driver”,“C:\\Selenium\\geckodriver.exe”);
Hey ferpel-干得好。我能够关闭geckodriver,使用firefox 45.6.1可以完成点击。我添加了以下代码行,替换gecko的System.setProperty:
DesiredCapabilities=new DesiredCapabilities()
然后是
capabilities.SetCapabilities(”木偶网”,false);
然后
WebDriver=newfirefoxdriver(功能);
if(WE7.isDisplayed() && WE7.isEnabled()){
    WE7.click();
}