【问题标题】:Selenium how to get the size of textSelenium 如何获取文本的大小
【发布时间】:2019-12-10 19:46:42
【问题描述】:

这与“如何获取包含某些文本的元素的大小”的问题不同。我可以使用 Selenium webdriver 获取包含文本的元素的大小,这不是问题。问题是,如果元素包含一些文本,那么一些子元素,例如一个跨度,其中也包含文本,那么如何获取第一段文本的大小,而不包括子元素?

在 Chrome 中,您实际上可以看到第一段文本的大小,如果您使用开发人员工具并选择该段,然后将鼠标悬停在其上。它会弹出一个工具提示,例如, “#text 92x40”给出宽度和高度。

此处的示例图片:

但问题是如何从 Selenium 获取这些信息。最好在 Python 中。

我还将添加一个注释以澄清:据我所知,Selenium 无法在 select_by_xpath 方法中选择text()。它最多只能选择父元素。这意味着如果感兴趣的文本(文本的第一段)是 xpath \div\div\text()[1],使用 Selenium 我只能选择 \div\div,这就是为什么我找不到它的宽度。另一方面,可以使用\div\div\span 选择子跨度元素,然后可以找到其宽度。

【问题讨论】:

    标签: python selenium selenium-webdriver


    【解决方案1】:

    您可以使用 JavaScript 来获取子元素的大小:

    element = driver.find_element_by_xpath("//*[.='carefully scrutinise the government\'']")
    width = driver.execute_script("return arguments[0].offsetWidth", element)
    

    【讨论】:

    • 谢谢。那不会选择文本的父元素,而不是文本本身吗?
    • 取决于您将使用的定位器。如果您对子元素使用正确的定位器,我分享的代码将为您提供它的宽度。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-10
    • 1970-01-01
    相关资源
    最近更新 更多