有没有办法在CSS选择器中包含HREF

时间:2017-08-26 09:22:44

标签: python css selenium selenium-webdriver

说我想点击https://www.w3schools.com/cssref/css_selectors.asp上的w3schools.com(左上角) 这样的事情......

a[href*="w3schools"]

更具体地说..

div.w3-container.top > a[href*="w3schools"][.w3schools-logo]

类似...... driver.find_elements_by_css_selector("div.w3-container.top > a[href*="w3schools"][.w3schools-logo]")这似乎不适用于Selenium。

我问的可能吗?使用a[href*="w3schools"]将大大缩小HREF的CSS选择器范围,而不必求助于页面的任何其他元素。

2 个答案:

答案 0 :(得分:0)

从你告诉我的内容来看,你的python中出现了错误而不是CSS中的错误。

这是您当前的代码:

driver.find_elements_by_css_selector("a.w3schools-logo[href*‌​="w3schools"]")

将其更改为:

driver.find_elements_by_css_selector("a.w3schools-logo[href*‌​='w3schools']")

基本上,在CSS中使用单引号(')。

尝试以下选择器之一:

div.w3-container.top > a[href*='w3schools']
div.w3-container.top > a
div.w3-container.top > a.w3schools-logo
div.w3-container.top > a.w3schools-logo[href*='w3schools']

你的选择器有类似a[href*='w3schools'][.w3schools-logo]的东西,这只是不正确的CSS。

如果要将类选择器与属性选择器组合,它应如下所示:

a.w3schools-logo[href*='w3schools']

答案 1 :(得分:0)

您的选择器几乎是正确的 - 您只需要用单引号替换双引号:

<Button x:Name="Start">
    <Interactivity:Interaction.Behaviors>
        <Core:EventTriggerBehavior EventName="Click">
            <Media:ControlStoryboardAction Storyboard="{StaticResource BackgroundColorStoryboard}" />
        </Core:EventTriggerBehavior>
    </Interactivity:Interaction.Behaviors>
</Button>

并在谓词中明确指定href*‌​‌​="w3schools" -> href*‌​‌​='w3schools' 属性节点类型:

class

所以下面应该运作良好:

[.w3schools-logo] -> [class='w3schools-logo']