首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lasuar
V2EX  ›  编程

一个 selenium 的问题

  •  
  •   lasuar · 240 天前 · 2453 次点击
    这是一个创建于 240 天前的主题,其中的信息可能已经有所发展或是发生改变。

    它有一个 find_element_by_css_selector()的方法,这个方法只能传入一个具体的 css 路径参数。
    我的问题是:
    需要定位一个元素,这个元素在网页深处,只能通过 dlv 的 class 属性快速定位,但是与他 class 相同的元素有多个,有一个笨办法是从最上层的标签一个一个找下来(通过 dlv:nth-child,我用的 css),但这个效率太低,还容易出错。
    一个 css 表达式是否可以先筛选标签的属性,再从筛选出的标签中选择第几个我要的?如果有,是怎么写的?

    先谢过各位^.^!

    第 1 条附言  ·  240 天前

    已解决。
    简单说明一下:我尝试了xpath(//div[@class="xxx"][seq])和css(tag[class="xxx"]:nth-of-type(seq))两种选择器的原生语法都不能解决我的问题,最后用(发现)selenium有对应的find_elements_by_xpath和find_elements_by_css_selector方法才得以解决。(困扰我3个小时...)
    eg:
    self.browser.find_elements_by_xpath('//div[contains(@class,"ipo-ScoreDisplayPoints_Wrapp")]')[1].click()
    重点在后面的下标。

    11 回复  |  直到 2019-05-27 14:42:56 +08:00
    YuxiangLuo
        1
    YuxiangLuo   240 天前 via Android
    [title=qqq]:nth-of-type(3)
    lasuar
        2
    lasuar   240 天前
    @YuxiangLuo 谢谢,我先试下!
    lasuar
        3
    lasuar   240 天前
    @YuxiangLuo 老哥,如何根据 text 筛选呢?看了很多文档貌似都不行。
    yejianmail
        4
    yejianmail   240 天前 via Android
    用 xpath 应该支持根据 text 筛选
    andylsr
        5
    andylsr   240 天前 via Android
    你没必要一层一层找啊~你只需要找到一个唯一标签,这个唯一可以用 id 或者 class 或者 name,再从这个唯一标签定位到目标标签
    hebwjb
        6
    hebwjb   240 天前
    楼上正解
    lasuar
        7
    lasuar   240 天前
    @andylsr 我说的就是通过 id/class/name 属性无法定位具体元素的情况。
    loryyang
        8
    loryyang   240 天前
    学一下 xpath,别的 find 函数就不需要了
    lasuar
        9
    lasuar   240 天前
    @loryyang 嗯,xpath 确实很强大,我主要是喜欢 css 的语法简洁性
    lasuar
        10
    lasuar   240 天前
    @lasuar 老哥,你说的这个在这里还是不行;不过我找到办法了,可以看下我的 append。
    lasuar
        11
    lasuar   240 天前
    @YuxiangLuo 老哥,你说的这个在这里还是不行;不过我找到办法了,可以看下我的 append。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2119 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 31ms · UTC 14:35 · PVG 22:35 · LAX 06:35 · JFK 09:35
    ♥ Do have faith in what you're doing.