2017-06-02 49 views
0

我是PhantomJSDriver的新手,并试图输入我的电子邮件并点击“下一步”按钮https://www.youtube.com/content_id进入下一个屏幕。Div点击不工作使用phantomjsdriver /硒支持

我能够输入我的电子邮件,但点击事件不起作用。

我的代码:

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("[email protected]"); 

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

即使尝试使用硒驱动程序 -

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。

任何帮助将不胜感激。

+0

什么是你收到bcuz它的错误很适合我 – kushal

+0

@ kushal。我没有得到任何错误,但是,它没有移动到下一个页面,它应该提示我输入密码。如果我点击()后截图或者甚至等待密码元素显示。 – Akshay

+0

我意识到我在javascript代码中设置的userAgent属性确实有效。任何想法如何在Java中设置? page.settings.userAgent ='Mozilla/5.0(Windows NT 10.0; WOW64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/44.0.2403.157 Safari/537.36'; – Akshay

回答

0

我能够通过设置用户代理如下所述(只是并主张,因为它可能帮助别人的答案)来解决它:

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