Selenium 2を使用しています。しかし、次のコードを実行した後、テキストボックスに入力できませんでした。
package Actor; import org.openqa.*; import org.openqa.Selenium.By; import org.openqa.Selenium.WebDriver; import org.openqa.Selenium.WebElement; import org.openqa.Selenium.firefox.FirefoxDriver; import org.junit.*; import com.thoughtworks.Selenium.*; //import org.junit.Before; public class Actor { public Selenium selenium; public WebDriver driver; @Before public void setup() throws Exception{ driver = new FirefoxDriver(); driver.get("http://www.fb.com"); } @Test public void Test() throws Exception{ //Selenium.type("id=gs_htif0", "test"); System.out.println("hi"); // driver.findElement(By.cssSelector("#gb_1 > span.gbts")).click(); Selenium.waitForPageToLoad("300000000"); WebElement email=driver.findElement(By.id("email")); email.sendKeys("[email protected]"); driver.findElement(By.id("u_0_b")).click(); } @After public void Close() throws Exception{ System.out.println("how are you?"); } }
友人に感謝します、私は答えを得ました。これは、あなたの助けがなければ不可能です。この問題を解決するための希望の光を与えてくれます。
コードは次のとおりです。
package facebook;
import org.openqa.Selenium.By;
import org.openqa.Selenium.WebDriver;
import org.openqa.Selenium.WebElement;
import org.openqa.Selenium.firefox.FirefoxDriver;
import org.openqa.Selenium.interactions.Actions;
public class Facebook {
public static void main(String args[]){
WebDriver driver = new FirefoxDriver();
driver.get("http://www.facebook.com");
WebElement email= driver.findElement(By.id("email"));
Actions builder = new Actions(driver);
Actions seriesOfActions = builder.moveToElement(email).click().sendKeys(email, "[email protected]");
seriesOfActions.perform();
WebElement pass = driver.findElement(By.id("pass"));
WebElement login =driver.findElement(By.id("u_0_b"));
Actions seriesOfAction = builder.moveToElement(pass).click().sendKeys(pass, "naveench").click(login);
seriesOfAction.perform();
driver.
}
}
Selenium WebDriverのみを使用し、Selenium-RCの使用を忘れた場合、これは簡単です。このように行きます。
WebDriver driver = new FirefoxDriver();
WebElement email = driver.findElement(By.id("email"));
email.sendKeys("[email protected]");
NullPointerException
の理由は、変数driver
が開始されたことがないため、変数FirefoxDriver
でwb
が開始されるためです。
_@Before
_注釈のWebDriver wb = new FirefoxDriver();
をdriver = new FirefoxDriver();
に置き換える必要があります。
Nullでdriver
オブジェクトにアクセスしているとき、またはwb
参照変数をグローバル変数として作成できます。
これを試して :
driver.findElement(By.id("email")).clear();
driver.findElement(By.id("email")).sendKeys("[email protected]");
Xpathを使用してこれを解決する別の方法
WebDriver driver = new FirefoxDriver();
driver.get("https://www.facebook.com/");
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
driver.findElement(By.xpath(//*[@id='email'])).sendKeys("[email protected]");
それが役立つことを願っています。 :)
テキストフィールドがディザリングされた場合に備えて、JavaScriptも使用できます。
WebDriver driver=new FirefoxDriver();
driver.get("http://localhost/login.do");
driver.manage().window().maximize();
RemoteWebDriver r=(RemoteWebDriver) driver;
String s1="document.getElementById('username').value='admin'";
r.executeScript(s1);