2015-10-17 25 views
0

我正在運行下面的硒代碼。無法在twitter中輸入ID

import org.openqa.selenium.By; 
import org.openqa.selenium.firefox.FirefoxDriver; 

public class twitter { 

    public static void main(String[] args) throws InterruptedException { 
     FirefoxDriver fd = new FirefoxDriver(); 
     fd.get("https://twitter.com/?lang=en"); 
     Thread.sleep(2000L); 
     fd.findElement(By.xpath(".//*[@id='signin-email']")).sendKeys("Hello"); 
    } 
} 

但是我得到了下面的錯誤。

log4j:WARN No appenders could be found for logger (org.apache.http.client.protocol.RequestAddCookies). 
log4j:WARN Please initialize the log4j system properly. 
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 
Exception in thread "main" org.openqa.selenium.ElementNotVisibleException: Element is not currently visible and so may not be interacted with 
Command duration or timeout: 14 milliseconds 
Build info: version: '2.47.1', revision: '411b314', time: '2015-07-30 02:56:46' 
System info: host: 'U0138039-TPL-A', ip: '192.168.1.14', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_67' 
Session ID: 96e0f5be-8e7d-402d-b7d0-2ebadc745663 
Driver info: org.openqa.selenium.firefox.FirefoxDriver 
Capabilities [{platform=WINDOWS, acceptSslCerts=true, javascriptEnabled=true, cssSelectorsEnabled=true, databaseEnabled=true, browserName=firefox, handlesAlerts=true, nativeEvents=false, webStorageEnabled=true, rotatable=false, locationContextEnabled=true, applicationCacheEnabled=true, takesScreenshot=true, version=40.0.3}] 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Unknown Source) 
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206) 
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158) 
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:595) 
    at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:273) 
    at org.openqa.selenium.remote.RemoteWebElement.sendKeys(RemoteWebElement.java:94) 
    at twitter.main(twitter.java:10) 
Caused by: org.openqa.selenium.ElementNotVisibleException: Element is not currently visible and so may not be interacted with 
Build info: version: '2.47.1', revision: '411b314', time: '2015-07-30 02:56:46' 
System info: host: 'U0138039-TPL-A', ip: '192.168.1.14', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_67' 
Driver info: driver.version: unknown 
    at <anonymous class>.fxdriver.preconditions.visible(file:///C:/Users/u0138039/AppData/Local/Temp/anonymous8514896172902827974webdriver-profile/extensions/[email protected]/components/command-processor.js:9982) 
    at <anonymous class>.DelayedCommand.prototype.checkPreconditions_(file:///C:/Users/u0138039/AppData/Local/Temp/anonymous8514896172902827974webdriver-profile/extensions/[email protected]/components/command-processor.js:12626) 
    at <anonymous class>.DelayedCommand.prototype.executeInternal_/h(file:///C:/Users/u0138039/AppData/Local/Temp/anonymous8514896172902827974webdriver-profile/extensions/[email protected]/components/command-processor.js:12643) 
    at <anonymous class>.DelayedCommand.prototype.executeInternal_(file:///C:/Users/u0138039/AppData/Local/Temp/anonymous8514896172902827974webdriver-profile/extensions/[email protected]/components/command-processor.js:12648) 
    at <anonymous class>.DelayedCommand.prototype.execute/<(file:///C:/Users/u0138039/AppData/Local/Temp/anonymous8514896172902827974webdriver-profile/extensions/[email protected]/components/command-processor.js:12590) 

請讓我知道我該如何解決它。

Thaks

+0

當元素IS存在於DOM中但不可見時拋出異常。在fd.findElement之前截取當前狀態並查看FD實際看到的內容。 https://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/TakesScreenshot.html – tiblu

+0

試試看答案 - – SIslam

+0

請正確格式化問題中的代碼 – JeffC

回答

-1

我試着用JavascriptExecutor如下,它的工作!它填充user namepassword,如foobarsubmits

package org; 
import org.openqa.selenium.By; 
import org.openqa.selenium.JavascriptExecutor; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.support.ui.ExpectedConditions; 
import org.openqa.selenium.support.ui.WebDriverWait; 

public class TwitterTest { 
    public static void main(String[] args) throws Exception { 
     // The Firefox driver supports javascript 
     WebDriver driver = new FirefoxDriver(); 
     // driver.manage().window().maximize(); 

     // Go to the page 
     driver.get("https://twitter.com/?lang=en"); 

     WebDriverWait wait = new WebDriverWait(driver,10);  
     WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='front-signin js-front-signin']"))); 
     JavascriptExecutor js = (JavascriptExecutor) driver; 
     js.executeScript("document.getElementById('signin-email').value = 'foo';"); 
     js.executeScript("document.getElementById('signin-password').value = 'bar';"); 
     js.executeScript("document.getElementsByClassName('t1-form signin')[0].submit();"); 
     wait.wait(10); 

     driver.quit(); } 
} 
+0

爲什麼使用JSE?沒有必要。 – JeffC

+0

@JeffC你能幫我解決這個問題嗎?我試着用等待和幾個定位器(ID,Classname,Xpath),但是無法通過 - 一些簡單的代碼片段 - http://pastebin.com/e3gMGYCG – SIslam

0

我遇到的問題是,當我瀏覽到自己的網站,登錄面板中顯示,但是當我做了代碼同樣的事情,登錄面板不顯示。解決方法是單擊「登錄」按鈕,然後輸入用戶名/密碼。下面的代碼點擊登錄按鈕並輸入電子郵件地址和密碼

driver.get("https://twitter.com/?lang=en"); 
driver.findElement(By.cssSelector("button.StreamsLogin")).click(); 
driver.findElement(By.id("signin-email")).sendKeys("email"); 
driver.findElement(By.id("signin-password")).sendKeys("password"); 

編輯:對於那些誰也看不出登錄按鈕???這是我看到的。

enter image description here

+1

啊!我沒有看到類名爲StreamsLogin的任何按鈕! – SIslam

+0

@SIslam添加了登錄按鈕位置的屏幕截圖。此代碼運行並適用於我。我不確定你爲什麼看不到按鈕? – JeffC

+0

嗨@JeffC,即使我無法看到登錄按鈕。然而,當我運行的代碼,我得到了以下異常:「異常在線程」主「」org.openqa.selenium.NoSuchElementException:無法找到元素:{「方法」:「css選擇器」,「選擇器」:「button.StreamsLogin 「} ' – user3872094