如何使用webdriver(python)从css(非内联)中按样式选择元素
Posted
技术标签:
【中文标题】如何使用webdriver(python)从css(非内联)中按样式选择元素【英文标题】:How do I select an element by its style from css (not inline) using webdriver (python) 【发布时间】:2014-08-07 07:03:03 【问题描述】:我希望使用 python-webdriver 根据元素的背景突出显示颜色来选择元素。通常,这段html:
<div class="line-highlight" style="background:#FD71B5;">
我会选择它执行以下操作:
.line-highlight[style*='background:#FD71B5']
但是,在这种情况下,我有不同的内联样式:
<div class="line-highlight" style=top:130px;height:28px;left:506px;width:434px;">
但是高亮颜色(相同)是在外部 CSS 中设置的,所以上面的选择器似乎不起作用。
如果样式不是内联的,webdriver 有什么方法可以按样式选择?
谢谢, 达伦
【问题讨论】:
不直接使用 CSS 选择器。您需要选择.line-highlight
并询问其计算样式。
【参考方案1】:
因为您要查找的 css 不是 HTML 标记的一部分,所以您不能像通常那样选择元素。
而是尝试通过类名“.line-highlight”进行选择,然后遍历生成的元素对象,并为每个元素获取 css 背景属性值,方法是:
value_of_css_property("background")
(或与此相关的任何 css 属性)。一旦元素与您正在寻找的背景相匹配,您就可以从循环中中断并找到您正在寻找的元素。
请注意,如果您使用的是 Java,请使用:
getCssValue(property-name)
【讨论】:
嗯,所以我应该能够做一些类似的事情来找到颜色并从那里开始工作:element = driver.find_element_by_css_selector(".line-highlight") element.value_of_css_property('color')
好的,谢谢!
对不起,我的意思是:element.value_of_css_property('background')
【参考方案2】:
这个链接http://www.w3.org/2002/07/26-dom-article.html 对风格的看法。
访问与文档关联的样式 文档中的每个节点都与风格效果相关联,例如颜色、位置和 边界。这些风格效果并不总是文档的一部分,可能在 一个称为样式表的单独部分。
因此,由于 Selenium 仅与 DOM 一起工作,它无法根据需要定位元素。
【讨论】:
以上是关于如何使用webdriver(python)从css(非内联)中按样式选择元素的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Selenium Webdriver 和 Python 从这个非选择下拉菜单中选择这个元素
Selenium,webdriver - 找不到 - xpath / css_selector / ... python
如何从带有 python 2.7 和 Robot framework 2.9 的 Edge webdriver 开始
从python中的Selenium Webdriver实例获取文本[重复]