2016-11-09 3 views
0

私のページには次のような要素があります。 Seleniumを使用してテキストを取得するにはどうすればよいですか? Sereniumを使用してhref内のクラスを持つHTML要素を見つける

<a ng-if="userCanEdit" class="btn btn-primary ng-scope" ui-sref="orgs-add" href="#/orgs/add"> 
    <i>Add New Member</i> 
</a> 

は、私は以下のコードを試してみましたが、それは正しくも

System.out.println(driver.findElement(By.cssSelector("a[href='#/orgs/add']")).getText()); 

、私のJavaScriptコンソール、式を評価し、('a[href="#/orgs/add"]')動作しません。

EDIT:私は上記のコードを試してみると、次のようにクラッシュしました。

*** Element info: {Using=css selector, value=a[href='#/orgs/add']} 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:216) 
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:168) 
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:635) 
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:368) 
    at org.openqa.selenium.remote.RemoteWebDriver.findElementByCssSelector(RemoteWebDriver.java:465) 
    at org.openqa.selenium.By$ByCssSelector.findElement(By.java:430) 
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:360) 
    at hello.validate(hello.java:101) 
    at hello.main(hello.java:60) 
+0

ので、あなたが言及したコードからどのような出力を得ていますか? –

+0

あなたのHTMLは「#/ members/add」と言っていますが、あなたのcssSelectorは「#/ orgs/add」を使用しています。あなたがタイプミスをした場合、あなたは単に "#/ members/add"を使う必要がありますか? –

+0

@StoyanBerov、それは原因ではありません。私は上で編集しました。私はサンプルを投稿しようとしていました。 – learningboy

答えて

1

角度でセレンを使用して、ほとんどの場合、あなたはDOM要素を動的に角度によって作成/変更されているので、いくつかの明示的な待ち時間を追加する必要があります。

たとえば、コードの下に使用して明示的に待機を追加しようとすることができます

http://www.seleniumhq.org/docs/04_webdriver_advanced.jsp

WebDriver driver = new FirefoxDriver(); 
driver.get("http://somedomain/url_that_delays_loading"); 
WebElement myDynamicElement = (new WebDriverWait(driver, 10)) 
.until(ExpectedConditions.presenceOfElementLocated(By.id("myDynamicElement"))); 

あなたの要素のロケータでBy.id("myDynamicElement")を交換してください。

これが役に立ちます。

0

これを試してみてください:

driver.findElement(By.cssSelector("a.btn.btn-primary.ng-scope")).getText(); 
-1

は、これを試してみてください

driver.findElement(By.className("btn btn-primary ng-scope")).getText(); 
+0

複合クラス名を使用できないため、これは機能しません。 – JeffC

関連する問題