【问题标题】:iterating through carousel objects in selenium with python使用 python 遍历 selenium 中的轮播对象
【发布时间】:2020-07-11 21:36:20
【问题描述】:

使用 selenium 我想在 gog.com 顶部的轮播中遍历游戏 我想打印所有价格,以下是轮播中我想要的信息的 2 个随机 xpath

/html/body/div[2]/div/div[3]/div/div[3]/div[2]/div/a[4]/div[2]/div/div/div[3]/div/span/span

/html/body/div[2]/div/div[3]/div/div[3]/div[2]/div/a[10]/div[2]/div/div/div[3]/div/span/span

这让我想遍历第一个 a 元素。每个都是不同的游戏。但它要么找不到该路径,不返回任何数据,要么返回一个没有属性 .text 或 .innerhtml 的对象,这样我就无法获得我想要的信息

下面是我的脚本

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium import webdriver

driver = webdriver.Chrome(executable_path=r"../Downloads/chromedriver.exe")
driver.get('https://www.gog.com/')
driver.maximize_window()
WebDriverWait(driver,10).until(EC.presence_of_element_located((By.XPATH,"/html/body/div[2]/div/div[3]/div/div[3]/div[2]/div/a[10]/div[2]/div/div/div[3]/div/span/span")))

for i in range(15):
    i+=1;
    A = "/html/body/div[2]/div/div[3]/div/div[3]/div[2]/div/a["+str(i)+"]/div[2]/div/div/div[3]/div/span[2]/span"
    try:
        print(driver.find_elements_by_xpath(A));
        print(driver.find_elements_by_xpath(A).text);
        print(str(driver.find_elements_by_xpath(A)));
    finally:
        pass

下面是它返回的对象的示例

[<selenium.webdriver.remote.webelement.WebElement (session="3ec9e534c096a49d3110dea89fea3864", element="0bf0c6b6-fb35-4e26-8bf4-acbb7431eafb")>]

下面是它返回的错误示例

Traceback (most recent call last):
  File "C:\Users\User\Desktop\mi faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaak.py", line 16, in <module>
    print(driver.find_elements_by_xpath(A).text);
AttributeError: 'list' object has no attribute 'text'

下面是我想要从中获取信息的实际元素的示例

&lt;span class="big-spot__price-amount" ng-bind="tile.data.price.finalAmount"&gt;13.69&lt;/span&gt;

如何让它打印本页顶部旋转木马中的所有价格https://www.gog.com/

【问题讨论】:

    标签: python html selenium xpath


    【解决方案1】:

    您正在为单个元素的 xpath 使用 find_elements_by_xpath 方法,该方法返回一个列表。所以改为使用 find_element_by_xpath

    建议:不要写绝对的xpath,而是让它通用。让你的代码看起来像这样:

    carousel_xpath = '//your generic xpath here'
    carousel_elements = driver.find_elements_by_xpath(carousel_xpath)
    for carousel in carousel_elements:
        print(carousel.text)
        //do your things here
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-21
      • 2017-02-23
      • 2014-06-18
      • 2023-03-25
      • 1970-01-01
      相关资源
      最近更新 更多