【问题标题】:Find an element nested in a "concat(" XPATH with selenium使用 selenium 查找嵌套在“concat(”XPATH 中的元素
【发布时间】:2020-10-25 22:10:42
【问题描述】:

我正在以 python 开发人员的身份开始我的第一个项目。我正在抓取一个零售网页。该站点具有无限滚动,但有时您无需调用无限滚动,只需单击此路径内的按钮即可:

<a href="" class="ver-mas-productos btn meanbee-infinitescroll-button" style="display: block;">VER más PRODUCTOS</a>

我试过通过 xpath 来寻找元素:

/html/body/div[1]/div[1]/div[1]/div[8]/div/div/div[2]/a
//*[@id="top"]/body/div[1]/div[1]/div[1]/div[8]/div/div/div[2]/a
//*[contains(concat( " ", @class, " " ), concat( " ", "meanbee-infinitescroll-button", " " ))]

也在寻找 css 连接器:

.meanbee-infinitescroll-button

或通过文字查看:

driver.find_elements_by_partial_link_text('PRODUCTOS')
driver.find_elements_by_link_text('VER más PRODUCTOS')

也尝试按类,部分文本,但我没有设法得到它并点击它。我对这个世界真的很陌生,所以我假设这是因为路径的目标是比按钮更大的框架,我不能直接引用它,但我不确定。

谢谢!

a screenshot of the button and the inspect part

【问题讨论】:

    标签: python css selenium xpath screen-scraping


    【解决方案1】:

    这可能是因为按钮加载需要时间。你可以试试这个:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    
    btn = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, 'ver-mas-productos btn meanbee-infinitescroll-button')))
    
    btn.click()
    

    【讨论】:

    • 谢谢!我试过但没用,我最终得到了一个不太优雅的解决方案,但显然它有效,driver.execute_async_script(""" var interval = setInterval(() => { var button = document.querySelector('[ class="ver-mas-productos btn meanbee-infinitescroll-button"]')
    【解决方案2】:

    一个更简单的 xpath 就足够了:

    //*[contains(@class, 'meanbee-infinitescroll-button']
    

    你可能需要等待元素:

    btn = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//*[contains(@class, 'meanbee-infinitescroll-button']')))
    
    btn.click()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多