【发布时间】:2017-06-06 00:37:51
【问题描述】:
我是 PhantomJSDriver 的新手,正在尝试输入我的电子邮件并通过单击 https://www.youtube.com/content_id 中的“NEXT”按钮进入下一个屏幕。
我可以输入我的电子邮件,但是点击事件不起作用。
我的代码:
DesiredCapabilities caps = DesiredCapabilities.firefox();
caps.setBrowserName("firefox");
caps.setJavascriptEnabled(true);
caps.setCapability("takesScreenshot", true);
caps.setCapability("handlesAlerts", true);
caps.setCapability("elementScrollBehavior", 1);
caps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, "C:\\phantomjs-2.1.1-windows\\bin\\phantomjs.exe");
System.out.println(caps);
WebDriver driver = new PhantomJSDriver(caps);
driver.manage().window().setSize(new Dimension(1920, 1080));
driver.get("https://www.youtube.com/content_id");
System.out.println(driver.getTitle());
WebElement elementEmail = driver.findElement(By.id("identifierId"));
System.out.println(elementEmail);
elementEmail.sendKeys("test@gmail.com");
WebElement elementNext = driver.findElement(By.id("identifierNext"));
System.out.println(elementNext + " :: " + elementNext.getText() + " :: " + elementNext.getAttribute("role"));
elementNext.click();
我也尝试使用以下代码提交表单,但没有成功:
WebElement elementForm = driver.findElement(By.tagName("form"));
System.out.println(elementForm + " :: " + elementForm.getText() + " :: " + elementForm.getAttribute("class"));
elementForm.submit();
我也尝试过使用 JavascriptExecutor -
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].click();", elementNext);
甚至,尝试使用 selenium 驱动程序 -
Actions action = new Actions(driver);
action.moveToElement(elementNext).click().perform();
我在等待几秒钟后尝试截屏,以便在下一个屏幕上显示密码字段,但截屏是初始页面的屏幕截图。
try {
(new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver d) {
return d.findElement(By.cssSelector("#password > div.aCsJod.oJeWuf > div > div.Xb9hP > input")).isDisplayed();
}
});
System.out.println("We are on password screen.");
} catch (Exception e) {
System.out.println(e.getMessage());
}
takeScreenshot(driver, "final.png"); // private method which captures screenshot to a file
当我在 PhantomJS - Javascript 代码中运行它时它工作正常,但是需要在 java 中运行它。
任何帮助将不胜感激。
【问题讨论】:
-
你收到的错误是什么,因为它对我很有效
-
@kushal。我没有收到任何错误,但是它没有移动到应该提示我输入密码的下一页。如果我在 click() 之后截屏,甚至等待密码元素显示出来。
-
我意识到我在 javascript 代码中设置的 userAgent 属性可以解决问题。知道如何在 Java 中设置它吗? page.settings.userAgent = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36';
标签: java selenium-webdriver phantomjs