这是关于Selenium并单击的另一个问题。我一直在挣扎大约两天,无法实现它 - 我已经在互联网上尝试了答案,现在我需要一个协调一致的努力。提前致谢!!Selenium,Java,屏幕截图和点击按钮的问题
我在以下网站上工作http://144.76.109.38/peTEST - 如果您想要追溯我的步骤,这可能会有所帮助。
我想填写登录表单,然后单击登录并查看答案页。
这里是我的代码:
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-喘息-64-LAMP工作
我的硒库是从客户联合3.0.1-nodeps.jar
我Geckodriver是v0.11.1-LINUX64
感谢您的帮助!
假设点击登录按钮的说法是'它WE7.sendKeys(Keys.ENTER)',为什么你发送一个回车键的按钮,而不是调用'点击()'就像你用做' user_login_name'和'user_password'字段?我不一定说它是错误的(我不知道,也没有检查),但是我只是单击()来代替它。另外,为什么你要在'user_login_name'和'user_password'字段上调用'click()'?只要给他们发送'键'。 – SantiBailors
嗨SantiBailors - 这只是一个演变。我尝试点击(),这并没有奏效。我在网上的其他地方看到了这个提示,所以我试了一下。它的工作原理 - 也就是说,它不会产生任何问题,但屏幕截图仍然不正确,这意味着点击没有成功。谢谢!!! –