首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Selenium find_elements_by_css_selector返回一个空列表

Selenium find_elements_by_css_selector返回一个空列表
EN

Stack Overflow用户
提问于 2015-12-26 15:50:56
回答 2查看 9.8K关注 0票数 3

我正在尝试用下面的脚本选择所有包含coupon-link关键字的ids。

代码语言:javascript
复制
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get("http://udemycoupon.discountsglobal.com/coupon-category/free-2/")
elems = driver.find_elements_by_css_selector('[id~=\"coupon-link\"]')
print(elems)

但是我得到了一个空的列表[]作为结果。我的css_selector怎么了?

我已经测试过find_elements_by_css_selector('[id=\"coupon-link-92654\"]')可以成功地工作。但我想选择所有的优惠券链接,而不仅仅是其中的一个。

我在w3schools.com上引用了这个文档。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-26 16:04:10

Selenium CSS只支持三个部分匹配操作符,即- $^*

CSS部分匹配表达式不正确-请在herehere处使用*^详细信息。您也可以使用xpath

代码语言:javascript
复制
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get("http://udemycoupon.discountsglobal.com/coupon-category/free-2/")

#select by css
#try *
css_lnks = [i.get_attribute('href') for i in driver.find_elements_by_css_selector('[id*=coupon-link]')]
#or try ^
#css_lnks = [i.get_attribute('href') for i in driver.find_elements_by_css_selector('[id^=coupon-link]')]

#select by xpath
xpth_lnks = [i.get_attribute('href') for i in driver.find_elements_by_xpath("//a[contains(@id,'coupon-link-')]")]

print xpth_lnks
print css_lnks
票数 1
EN

Stack Overflow用户

发布于 2015-12-27 12:38:11

~=选择器按空格分隔的值进行选择。从这个意义上说,它的工作方式类似于匹配class属性的类选择器。

由于id中通常没有空格(因为一个ID属性一次只能指定一个id ),因此将~=与id属性一起使用是没有意义的。

如果只想通过ID中的前缀选择元素,请使用^=

代码语言:javascript
复制
elems = driver.find_elements_by_css_selector('[id^=\"coupon-link\"]')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34469504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档