簡體   English   中英

無法按類硒亞馬遜找到元素

[英]Can't find element by class selenium amazon

我目前正在 amazon.es 網頁上嘗試 Selenium Webdriver。 我已成功瀏覽網頁,按類查找元素(准確地說是搜索項按鈕)。

問題是當我嘗試獲取網頁的價格時。 該網頁可以在這里找到(只需查找 Balon Baloncesto=> Basketball)。 當我嘗試按類搜索元素時,這正是:

<span class="a-size-base a-color-price s-price a-text-bold">EUR 33,64</span>

Selenium 找不到它,給出了 not found element 錯誤。 這是Java實現。 nav是瀏覽器對象。

//value = a-size-base a-color-price s-price a-text-bold
elemList = nav.findElements(By.className(value));
//elemList appears to be empty after this

網頁上沒有任何 iFrame 可以影響我,所以我不太清楚問題出在哪里。 任何幫助將不勝感激。

最好的問候

By.className(value)對具有多個類的元素具有特定的行為。 我在 JS 綁定中找不到這種行為的記錄,但這是 Java 中相同功能的摘錄。

從文檔

如果一個元素有多個類,那么這將匹配每個類。 例如,如果值為“one two onone”,則類名“one”和“two”將匹配。

因此,當實際的類屬性是class="a-size-base a-color-price s-price a-text-bold"只有以下By.className標識符會匹配。

By.className("a-size-base")
By.className("a-color-price")
By.className("s-price")
By.className("a-text-bold")

但是請注意,我希望其中一個或多個能夠額外識別屏幕上您不想要的其他一些對象。

如果要匹配所有類,請嘗試使用 xpath 來檢查@class屬性是否包含您的值。

或者(這通常會比 xpath 表現得更好)使用將所有類名鏈接在一起的 css 選擇器。 CSS 選擇器中的每個類名都應該以.

By.css(".a-size-base.a-color-price.s-price.a-text-bold")

此代碼可能會幫助您:

WebDriver nav = new FirefoxDriver();
nav.get("https://www.amazon.es/s/ref=nb_sb_noss/261-8047486-3232562?__mk_es_ES=%C3%85M%C3%85%C5%BD%C3%95%C3%91&url=search-alias%3Daps&field-keywords=Balon+Baloncesto&rh=i%3Aaps%2Ck%3ABalon+Baloncesto");

 List<WebElement> elements = nav.findElements(By.xpath("//span[contains(@class,'a-size-base a-color-price s-price a-text-bold')]"));
 for(WebElement element: elements) {
         System.out.println(element.getText());
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM