Python3 --- Selenium_CSS expression selects elements
2020-04-08
1: CSS Selector Syntax selection theory
CSS syntax used to select the action elements. The basic structure: selector {statement}. Below: We learn Selenium is mainly used its "select" function. Specific learning CSS syntax reference links: https://www.w3school.com.cn/css/css_syntax.asp
Select a single element by CSS Selector Method: find_element_by_css_selector (css selector parameter)
Select all the elements through CSS Selector methods: find_elements_by_css_selector (css selector parameter)
2: Select elements based on tag name.
Usage: find_elements_by_css_selector ( 'tag name')
#!/usr/bin/env python from selenium import webdriver driver = webdriver.Chrome() driver.get('https://www.cnblogs.com/') driver_script = driver.find_elements_by_css_selector('script') for i in driver_script: print(i) driver.close()
3: The id attribute syntax is an element selected in the previous id number plus a number #: #id value
#!/usr/bin/env python from selenium import webdriver driver = webdriver.Chrome() driver.get('https://www.cnblogs.com/') driver_id_main = driver.find_element_by_css_selector('#main') print(driver_id_main.text) driver.close()
4: Select a syntax element in accordance with the class attribute class value plus a front point: value .class
#!/usr/bin/env python from selenium import webdriver driver = webdriver.Chrome() driver.get('https://www.cnblogs.com/') driver_class_rss_link = driver.find_elements_by_css_selector('.rss_link') for i in driver_class_rss_link: print(i.text) driver.close()
5: Select the sub-elements
Then label which contains elements called sub-elements. such as:
Represents a sub-element using the ">" For example: targeting elements <div id = 'layer1'> can be written as follows: #container> # layer1
Support continuous positioning, such as: #container> # layer1> .post_nav_block
< Div ID = 'Container' > < div ID = 'Layer1' > # < div ID = 'Layer1' > of < div ID = 'Container' > child element. < Div ID = 'inner11' > < span > inner layer. 11 </ span > </ div > < div ID = 'inner12' > < span > inner layer 12 < > </ Div > < div ID = 'Layer2' > # < div ID = 'Layer2' > of < div ID = 'Container' > child element. < Div ID = 'inner21' > < span > inner layer 21 is </ span > </ div > </ div > </ div >
#!/usr/bin/env python from selenium import webdriver driver = webdriver.Chrome() driver.get('https://www.cnblogs.com/') driver_1 = driver.find_elements_by_css_selector('#main > .post_nav_block_wrapper') for i in driver_1: print(i.text) driver.close()
6: Select the descendant elements
It refers to all descendent elements among the elements contained in the label (including sub-elements)
It represents a sub-element using the "space", such as: positioning element <div id = 'container'> contains all the elements which can be written as follows: #container # layer1
Supports multiple selection
#!/usr/bin/env python from selenium import webdriver driver = webdriver.Chrome() driver.get('https://www.cnblogs.com/') driver_1 = driver.find_elements_by_css_selector('#main .rss_link') for i in driver_1: print(i.text) driver.close()
7: The Select targeting property value
css selector selects an element supported by any attribute grammar is a square bracket with []
#!/usr/bin/env python from selenium import webdriver driver = webdriver.Chrome() driver.get('https://www.cnblogs.com/') driver_1 = driver.find_elements_by_css_selector('[href = "#"]') for i in driver_1: print(i.text) driver.close()
8: Group Selection
Group selection using the "comma" two different elements selected
#!/usr/bin/env python from selenium import webdriver driver = webdriver.Chrome() driver.get('https://www.cnblogs.com/') driver_1 = driver.find_elements_by_css_selector('#main [href="#"],#main [href="/following"]') for i in driver_1: print(i.text) driver.close()
9: selecting a child node in sequence
Use "nth-child" to specify the parent element of several sub-nodes
9.1: Select an element of the second child
:nth-child(2)
#!/usr/bin/env python from selenium import webdriver driver = webdriver.Chrome() driver.get('https://www.cnblogs.com/') driver_1 = driver.find_elements_by_css_selector('#main .post_nav_block :nth-child(2)') for i in driver_1: print(i.text) driver.close()
9.2: Specify the type specified tag under certain element of several sub-node
span:nth-child(2)