2017-09-05 11 views
1

私はさまざまなクローラでプロジェクトを行い、ユーザーの操作を模倣しようとしています。その一部として、私はこれをクロールしていますurl。ここに郵便番号ボックスがあり、それをクリックしてドロップダウンからテキストを抽出しようとしていますが、その後に表示されます。私は以下のコードを書いたが、なぜそれが全く働いていないのか分からない。誰でも助けてくれますか?私は根本的な原因を見つけるために網羅的な検索を行ったが、何も得られなかった。どんな提案も非常に高く評価されるだろう。javaのphantomjs-seleniumをクリックしたり、応答しないページを開くことができません

driver.getUrl(aboveUrl); 
WebElement inputBox = driver.findElement(By.id("pincodeInputId")); 
inputBox.click(); 
System.out.println(driver.findElement(By.className("_3mWImx")).getText()); 

- これはnullを返します。 助けを待っています!

+0

あなたは(findElementsを使用するためにあなたが持っているすべてを印刷したい場合は実際には、ドロップダウン内に複数の値があります)。このコードを使用すると、希望の結果が得られます – iamsankalp89

答えて

0

の理由は、あなたが選んだノードは、あなたが

System.out.println(driver.findElement(By.css("_3mWImx span")).getText()); 

を使用する必要があり、それがうまくいくテキスト

Dev Tools

を持っている要素の親ノードです。また、クラス_3mWImxには複数の要素があることに注意してください。これにより、最初のものだけが得られます。これらのすべてに興味がある場合は、driver.findElementsを使用して結果をループする必要があります。

0

findElements()のすべてを印刷する場合は、ドロップダウンに複数の値が表示されます。それはあなたの望ましい結果が得られます。このコードを使用します。

WebDriver driver=new FirefoxDriver(); 
driver.manage().window().maximize(); 
driver.get("https://www.flipkart.com/moto-e4-plus-fine-gold-32-gb/p/itmevqynuz4fwxca"); 
WebElement inputBox = driver.findElement(By.id("pincodeInputId")); 
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
inputBox.click(); 
List<WebElement> elements=driver.findElements(By.className("_3mWImx")); 
for(WebElement ele:elements) 
{ 
System.out.println(ele.getText()); //It will print innertext of each element 
} 

出力:

From Saved Addresses 

Loginto see your saved addresses 
+0

欲しい場合は、firefoxdriverの代わりにPhantomjsを使用してください – iamsankalp89

関連する問題