Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.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 selector::before不起作用_Python_Selenium_Xpath_Css Selectors - Fatal编程技术网

Python 如何识别selenium中的css selector::before不起作用

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

我正在尝试使用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(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个