我正在尝试用下面的脚本选择所有包含coupon-link关键字的ids。
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上引用了这个文档。
发布于 2015-12-26 16:04:10
Selenium CSS只支持三个部分匹配操作符,即- $^*。
CSS部分匹配表达式不正确-请在here和here处使用*或^详细信息。您也可以使用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发布于 2015-12-27 12:38:11
~=选择器按空格分隔的值进行选择。从这个意义上说,它的工作方式类似于匹配class属性的类选择器。
由于id中通常没有空格(因为一个ID属性一次只能指定一个id ),因此将~=与id属性一起使用是没有意义的。
如果只想通过ID中的前缀选择元素,请使用^=
elems = driver.find_elements_by_css_selector('[id^=\"coupon-link\"]')https://stackoverflow.com/questions/34469504
复制相似问题