PYTHON,SELENIUM如何获取HTML内元素,

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PYTHON,SELENIUM如何获取HTML内元素,相关的知识,希望对你有一定的参考价值。

附该行html全代码: <frame:groupmenu id="menu" style="height: 90%; overflow: visible;" itemalign="left" groupalign="left" ongroupclick="groupmenu_handleGroupClick();" oncontextmenu_item="showcontextmenu();" onitemclick="groupmenu_handleMenuClick();" indent="8" renderAsTree="true" batchlevel="2"/>
请问SELENIUM如何获取查询到菜单栏内数据,整个HTML 里 只有这行是控制菜单栏这片区域的,谢谢
switch_to_frame(0) 获取的值 为 NONE,是否需要跳转到IFRAME 里,就算跳进去该如何继续下一步呢? 只有这段HTML 控制红框里的整片区域

参考技术A


先定位到,然后接上后面的.get_property('id或者name')

参考技术B

有两个问题:

    1. frame标签后面加冒号是标准的frame写法吗?不会是自定义的标签吧

<frame:groupmenu ...>

...

</frame>


    2. 我用的switch_to_frame(frameName) 没有问题

        print '-------------------------switch to top frame'
        driver.switch_to_default_content()
        driver.switch_to_frame('top')

        print driver.find_element_by_id('top-btn').text
        print 'switch_to_frame done.'

        print '-------------------------switch to left frame'
        driver.switch_to_default_content()
        driver.switch_to_frame('left')

        print driver.find_element_by_id('left-btn').text
        print 'switch_to_frame done.'

        print '-------------------------switch to main frame'
        driver.switch_to_default_content()
        driver.switch_to_frame('main')

追问

这个HTML 不是我写的,具体是啥我不晓得,但是如果要SWITCH _FRAME 这个,该如何写呢? 整篇 HTML 里 就这段控制 菜单区域的,如果 是标签的话 FIND_ELEMENT_BY_ID('MENU') 后 该怎么获取,怎么操作才能获取到 整片菜单内查询出的结果呢?

追答

建议你使用浏览器中的web developer工具 看看具体的标签结构先。
正常的话 能看到菜单是div标签还是li标签构成的。
知道标签和层次关系 定位就简单了

如何仅在python selenium中获取第一层子元素

如何在selenium python中获取仅第一层子元素的列表?

我想要类似于这里描述的东西:Selenium Python get all children elements

但是,我只想要第一层子元素。我附上了一张图片来解释。

sub list problem

如果我按照其他条目中描述的那样做,我得到所有sub和sub sub .......元素。我只想要第一层像图中所示的4个div元素而不是8个子子元素。

答案

是的,您需要指定一个直接的父子关系,可以通过单个/在XPath中完成,也可以通过>在CSS选择器中完成:

driver.find_elements_by_xpath("//section[@id = 'irq']/div/div[@eid]")
driver.find_elements_by_css_selector("section#irq > div > div[eid]")

如果我从截图中得到它们,请重新检查irqeid(它有点模糊)。

另一答案

这看起来像你在寻找:

>>> elements = driver.find_elements_by_xpath('//div[@id="first"]/div')
>>> [i.get_attribute('id') for i in elements]
['second-1', 'second-2', 'second-3']

示例html:

<html>
  <body>
    <div id="first">
      <div id="second-1"></div>
      <div id="second-2">
        <div id="third-1"></div>
      </div>
      <div id="second-3"></div>
    </div>
  </body>
</html>

以上是关于PYTHON,SELENIUM如何获取HTML内元素,的主要内容,如果未能解决你的问题,请参考以下文章

PYTHON,SELENIUM如何获取HTML内元素,

如何使用Selenium和Python从Java脚本获取变量值

如何仅在python selenium中获取第一层子元素

请教Python+selenium如何获取元素属性值问题

如何在 Python + Selenium 中获取元素的值?

如何使用 Selenium Python 获取文本颜色