Python 如何识别selenium中的css selector::before不起作用
我正在尝试使用Selenium获取list::before伪元素中的所有元素。我无法将数据保存到列表中 场景:我想将所有数据放入列表中,列表中包含li中的数据和一个标记 下面是DOM的外观: 我正在使用selenium+python 此代码悬停在主类别导航“女性”:Python 如何识别selenium中的css selector::before不起作用,python,selenium,xpath,css-selectors,Python,Selenium,Xpath,Css Selectors,我正在尝试使用Selenium获取list::before伪元素中的所有元素。我无法将数据保存到列表中 场景:我想将所有数据放入列表中,列表中包含li中的数据和一个标记 下面是DOM的外观: 我正在使用selenium+python 此代码悬停在主类别导航“女性”: element_to_select = driver.find_element_by_xpath("//*[@id='nico-main-header']/nav/ul/li[1]") hover = ActionChains(d
element_to_select = driver.find_element_by_xpath("//*[@id='nico-main-header']/nav/ul/li[1]")
hover = ActionChains(driver).move_to_element(element_to_select)
hover.perform()
driver.implicitly_wait(15)
打印所有标签:
ele = driver.find_element_by_css_selector("ul .row .col-md-3:first-child ul li")
print(ele)
**但是在打印ele时,li锚定标记不会出现。您可以使用以下代码: 对于标签
my_a_tag_datas = [] //empty list
a_data = driver.find_elements_by_tag_name("a") //a tag from web driver
for a_tag_data in a_data:
a_tag_data_taxt = a_tag_data.text // a tag element data convert to text
my_a_tag_datas.append(a_tag_data_taxt) // a tag whole data save in list
print(my_a_tag_datas) // print list data
对于li标签:相同的代码,请将“a”替换为“li”
注意:如果您保存所有元素而不是文本,请在我添加标签数据的地方添加标签数据。免责声明:这不是最佳解决方案。我是第一次使用python,对selenium没有太多的经验
elem = driver.find_element_by_css_selector('.col-md-3').find_elements_by_tag_name('a')
for a_tag_data in elem:
a_tag_data_text = a_tag_data.text
my_a_tag_datas = my_a_tag_datas + a_tag_data_text
print(my_a_tag_datas)
CSS用于为元素的指定部分设置样式。它可用于:
- 设置元素的第一个字母或行的样式
- 在元素内容之前或之后插入内容
::之前 在HTML中的任何其他内容之前而不是之后插入内容。使用其中一个的唯一原因是:
- 您希望生成的内容在位置上位于元素内容之前
内容在源代码顺序中也是“after”,因此如果自然堆叠,它将位于::after
的顶部::before
这个用例 要提取
和Python中的所有文本,您必须为所有元素的可见性引入WebDriverWait()
,您可以使用以下任一选项:
- 使用
CSS\u选择器
:
driver.get("https://nthqibord.com/2019/08/15/pemimpin-pkr-pertahan-tun-mahathir/")
print([my_elem.text for my_elem in WebDriverWait(driver, 5).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "a#main-category-menu[href='/shop/women/'] + ul.top-nav-border ul li>a")))])
- 使用
XPATH
:
driver.get("https://nthqibord.com/2019/08/15/pemimpin-pkr-pertahan-tun-mahathir/")
print([my_elem.text for my_elem in WebDriverWait(driver, 5).until(EC.visibility_of_all_elements_located((By.XPATH, "//a[@id='main-category-menu' and @href='/shop/women/']//following::ul[@class='top-nav-border']//ul//li/a")))])
- 注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
是否希望列表中的所有li元素?是。我想在标记的位置标记所有数据。比如:Woollies打40折,新来的人和所有的li a标签数据你能发布你已经尝试过的代码吗?这段代码是hove到主类别nav:element\u to\u select=driver。通过xpath(“/*[@id='nico-main-header']/nav/ul/li[1]”hover=ActionChains(driver)。将\u移动到\u element(element\u to\u select)hover.perform()driver.implicitly_wait(15)Print all li achor tag:ele=driver.find_element_by_css_selector(“ul.row.col-md-3:first child ul li”)Print(ele)请将selenium代码发布到您尝试的java、python或javascript任何编程语言中。运行代码时它都不起作用。仅打印女性字符串,所有数据均为空。不工作错误,TypeError:\uuuuu init\uuuuu()接受2个位置参数,但给出了3个