python - 在硒中找不到元素。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 窗口中,所以这不是问题。任何帮助,将不胜感激。
解决方案
您应该始终尝试修剪选择器,使它们尽可能薄。
作为选择器,您应该使用:
此选择器将匹配确切的类名:
xpath('//div[@class="ellipsis _1ha3"][x]')
或者
此选择器将匹配包含此字符的元素类:
xpath('//div[contains(@class, "ellipsis _1ha3")][x]')
- x 是检索到的 dom 元素的位置,从 1 开始,([1] 将选择第一次出现,依此类推)。
推荐阅读
- django - 获取所有具有 M2M 关系的 Django 对象
- node.js - Vue2 timepicker:来自 API 的默认值
- powershell - 在 Powershell 中覆盖 zip 文件中的相同名称
- javascript - VueJS 忽略 InnerHTML
- ruby - 助手内部的 Sinatra 自定义异常处理不起作用
- c++ - C ++ Ncurses正在复制输出
- reactjs - 使用 React Hooks,为什么即使我做了 setState,课程列表也没有呈现在页面上?
- reactjs - 分页:在切换回来后的最后一页上进行了更改
- java - 从文件中读取并将其插入到数组中,Java
- matlab - 试图在 mat lab 中绘制一个函数