【问题标题】:Div click not working using phantomjsdriver / selenium-support使用 phantomjsdriver / selenium-support 时,Div 单击不起作用
【发布时间】: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


【解决方案1】:

我能够通过设置如下所述的用户代理来解决它(只是提出答案,因为它可能对某人有所帮助):

String userAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36";
DesiredCapabilities caps = DesiredCapabilities.firefox();
caps.setCapability(PhantomJSDriverService.PHANTOMJS_PAGE_SETTINGS_PREFIX + "userAgent", userAgent);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 2016-07-22
    • 1970-01-01
    相关资源
    最近更新 更多