2017-06-02 42 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);