【问题标题】:Can't locate element in selenium. XPath, css selectors, I've tried everything在硒中找不到元素。 XPath,css 选择器,我什么都试过了
【发布时间】:2019-01-18 21:09:16
【问题描述】:

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 窗口中,所以这不是问题。任何帮助将不胜感激。

a copy of the element #clicks

【问题讨论】:

  • edit您的帖子并向我们展示您所定位的HTML,作为文本。您确定该网站在没有启用 Javascript 的情况下可以正常工作吗?
  • 我刚刚为我要定位的元素添加了 html。我对 Javascript 不太熟悉,但我知道#impressions 非常完美。不太清楚为什么#clicks 不这样做。请让我知道是否还有其他我可以提供的帮助。谢谢。
  • 这听起来像X-Y problem。与其寻求解决问题的帮助,不如编辑您的问题并询问实际问题。你想做什么?

标签: python selenium automation


【解决方案1】:

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

你应该使用的选择器:

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

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

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

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

【讨论】:

    【解决方案2】:

    发生的变量必须放在完整的xpath之后:

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

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

    您可以在 Chrome 的控制台中尝试 xpath,如下所述:

    $x("(//div[contains(@class,'ellipsis _1ha3')])[x]")
    

    如果类名必须完全匹配,那么:

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

    【讨论】:

      猜你喜欢
      • 2016-01-21
      • 1970-01-01
      • 1970-01-01
      • 2020-10-16
      • 2015-12-29
      • 2021-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多