首页 > 解决方案 > 在硒中找不到元素。XPath,css 选择器,我什么都试过了

问题描述

Impressions
<div class="ellipsis _1ha3" data-hover="tooltip" data-tooltip-display="overflow" data-tooltip-text-direction="auto">11,483</div>

Clicks

<div class="ellipsis _1ha3" data-hover="tooltip" data-tooltip-display="overflow" data-tooltip-text-direction="auto">379</div>

我目前被卡住了。我正在运行两段相同的代码来从 fb 广告管理器中提取指标,尽管顶部代码工作正常,但第二个代码(试图查找点击的代码)似乎无法找到我正在寻找的元素。我已经尝试了 xpath、css_selectors,一切,但似乎仍然无法找出为什么我无法找到该元素。任何帮助,将不胜感激。谢谢!

展示次数

impressions = browser.find_element_by_xpath('//*[@id="ads_pe_container"]/div[2]/div[2]/div[4]/div/div/div/div/div[2]/div/div/div[1]/div[1]/div/div[2]/div/div/div[1]/div[4]/div/div/div[2]/div/div[5]/div/div/div/div[1]')
impressions_text = impressions.text
impressions_attribute_value = impressions.get_attribute('value')
impressions = ('{0}'.format(impressions_text))
print(impressions)

点击次数

clicks = browser.find_element_by_xpath('//*[@id="ads_pe_container"]/div[2]/div[2]/div[4]/div/div/div/div/div[2]/div/div/div[1]/div/div/div[2]/div/div/div[1]/div[4]/div/div/div[2]/div/div[7]/div/div/div/div[1]')
clicks_text = clicks.text
clicks_attribute_value = clicks.get_attribute('value')
clicks = ('{0}'.format(clicks_text))
print(clicks)

我期待#click 像#impressions 一样返回一个数字,但它似乎找不到该元素。我什至尝试过切换帧无济于事。#impressions 位于 DOM 窗口中,所以这不是问题。任何帮助,将不胜感激。

元素 #clicks 的副本

标签: pythonseleniumautomation

解决方案


您应该始终尝试修剪选择器,使它们尽可能薄。

作为选择器,您应该使用:

此选择器将匹配确切的类名:

xpath('//div[@class="ellipsis _1ha3"][x]')

或者

此选择器将匹配包含此字符的元素类:

xpath('//div[contains(@class, "ellipsis _1ha3")][x]')
  • x 是检索到的 dom 元素的位置,从 1 开始,([1] 将选择第一次出现,依此类推)。

推荐阅读