Selenium webdriver (Java)를 사용하여 YouTube 제안에서 검색 결과를 검색하려고하는데 다음과 같은 오류가 발생합니다. 도와주세요.Selenium webdriver - youtube에서 요소를 찾을 수 없습니다.
오류 :
Caused by: org.openqa.selenium.remote.ErrorHandler$UnknownServerException: Unable to locate element: {"method":"class name","selector":"gssb_e"}
Build info: version: '2.41.0', revision: '3192d8a', time: '2014-03-27 17:18:15' System info: host: 'localhost', ip: '127.0.0.1', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.9.3', java.version: '1.7.0_55' Driver info: driver.version: unknown
코드 유튜브 제안에 의해 생성 된
package test3;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
public class YoutubeSuggest {
public static void main(String[] args) {
// The Firefox driver supports javascript
WebDriver driver = new FirefoxDriver();
// Go to the youtube home page
driver.get("http://www.youtube.com/");
// Enter the query string "Ozzy "
WebElement query = driver.findElement(By.name("search_query"));
query.sendKeys("Ozzy ");
// Sleep until the div we want is visible or 10 seconds is over
long end = System.currentTimeMillis() + 10000;
while (System.currentTimeMillis() < end) {
WebElement resultsDiv = driver.findElement(By.className("gssb_e"));
// If results have been returned, the results are displayed in a drop down.
if (resultsDiv.isDisplayed()) {
break;
}
}
// And now list the suggestions
List<WebElement> allSuggestions = driver.findElements(By.xpath("//td[@class='gsq_a']"));
for (WebElement suggestion : allSuggestions) {
System.out.println(suggestion.getText());
}
//driver.quit();
}
}
HTML :
<table dir="ltr" class="gstl_50 gssb_c"
style="width: 585px; top: 39px; position: fixed; text-align: left; left: 230px; display: none;"
cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td class="gssb_f"></td>
<td style="width: 100%;" class="gssb_e"><table class="gssb_m"
style="width: 100%;" cellpadding="0" cellspacing="0">
<tbody>
<tr class="">
<td style="text-align: left;" dir="ltr" class="gssb_a gsfs"><div
class="gsq_a">
<table style="width: 100%;" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="width: 100%;"><span>ozzy<b>
osbourne</b></span></td>
</tr>
</tbody>
</table>
</div></td>
</tr>
<tr class="">
<td style="text-align: left;" dir="ltr" class="gssb_a gsfs"><div
class="gsq_a">
<table style="width: 100%;" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="width: 100%;"><span>ozzy<b>
osbourne crazy train</b></span></td>
</tr>
</tbody>
</table>
</div></td>
</tr>
<tr class="">
<td style="text-align: left;" dir="ltr" class="gssb_a gsfs"><div
class="gsq_a">
<table style="width: 100%;" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="width: 100%;"><span>ozzy<b>
osbourne no more tears</b></span></td>
</tr>
</tbody>
</table>
</div></td>
</tr>
<tr class="">
<td style="text-align: left;" dir="ltr" class="gssb_a gsfs"><div
class="gsq_a">
<table style="width: 100%;" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="width: 100%;"><span>ozzy<b>
osbourne mama i'm coming home</b></span></td>
</tr>
</tbody>
</table>
</div></td>
</tr>
<tr class="">
<td style="text-align: left;" dir="ltr" class="gssb_a gsfs"><div
class="gsq_a">
<table style="width: 100%;" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="width: 100%;"><span>ozzy<b>
osbourne paranoid</b></span></td>
</tr>
</tbody>
</table>
</div></td>
</tr>
<tr class="">
<td style="text-align: left;" dir="ltr" class="gssb_a gsfs"><div
class="gsq_a">
<table style="width: 100%;" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="width: 100%;"><span>ozzy<b>
osbourne justin bieber</b></span></td>
</tr>
</tbody>
</table>
</div></td>
</tr>
<tr class="">
<td style="text-align: left;" dir="ltr" class="gssb_a gsfs"><div
class="gsq_a">
<table style="width: 100%;" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="width: 100%;"><span>ozzy<b>
osbourne mr crowley</b></span></td>
</tr>
</tbody>
</table>
</div></td>
</tr>
<tr class="">
<td style="text-align: left;" dir="ltr" class="gssb_a gsfs"><div
class="gsq_a">
<table style="width: 100%;" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="width: 100%;"><span>ozzy<b>
osbourne bark at the moon</b></span></td>
</tr>
</tbody>
</table>
</div></td>
</tr>
<tr class="">
<td style="text-align: left;" dir="ltr" class="gssb_a gsfs"><div
class="gsq_a">
<table style="width: 100%;" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="width: 100%;"><span>ozzy<b>
osbourne interview</b></span></td>
</tr>
</tbody>
</table>
</div></td>
</tr>
<tr class="">
<td style="text-align: left;" dir="ltr" class="gssb_a gsfs"><div
class="gsq_a">
<table style="width: 100%;" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="width: 100%;"><span>ozzy<b>
osbourne dreamer</b></span></td>
</tr>
</tbody>
</table>
</div></td>
</tr>
</tbody>
</table></td>
</tr>
</tbody>
</table>
어떻게 지구에 당신이 UI 수준에서 그렇게 하시겠습니까? [Youtube API] (https://developers.google.com/youtube/getting_started)를 사용할 수없는 이유가 있나요? –
@ https://code.google.com/p/selenium/wiki/GettingStarted 코드와 비슷한 것을하려고합니다. 작동하지만 YouTube 추천은 작동하지 않습니다. 이것은 웹 드라이버를 사용하는 자동화를위한 것입니다. – kasukur
YouTube 또는 Google 기반 사이트 일 수도 있지만 사이트 자동화에 사용하기가 끔찍합니다. 나는 당신이하려고하는 모든 것이 * 뭔가 *를 사용하는 것이라면 뭔가 다른 것을 시도 할 것입니다. – Arran