Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Selenium按css查找元素选择器返回空列表_Python_Python 2.7_Selenium_Css Selectors - Fatal编程技术网

Python Selenium按css查找元素选择器返回空列表

Python Selenium按css查找元素选择器返回空列表,python,python-2.7,selenium,css-selectors,Python,Python 2.7,Selenium,Css Selectors,我试图用下面的脚本选择所有包含优惠券链接关键字的ID 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_s

我试图用下面的脚本选择所有包含
优惠券链接
关键字的ID

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_选择器有什么问题

我已经测试了
find\u elements\u by\u css\u selector('[id=\“优惠券链接-92654\”])
是否能成功工作。但我想选择所有的优惠券链接,而不仅仅是其中一个


我引用了位于的文档。

Selenium CSS仅支持三个部分匹配运算符,即。-
$^*

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

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

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

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

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

elems = driver.find_elements_by_css_selector('[id^=\"coupon-link\"]')
谢谢:)。我希望我能知道如何正确使用
~=
。在阅读上的说明后,我无法区分
~=
*=
之间的区别。