python學習之selenium~css定位完整版,附代碼     DATE: 2022-01-28 03:51:30

css選擇器有44種:.class:.intro,選擇class=‘intro’的所有元素#id:#firstname,選擇id...css選擇器有44種:.class:.intro,選擇class=‘intro’的所有元素#id:#firstname,選擇id=‘fistname’的所有元素*:*,選擇所有的元素element:p,選擇所有的p標簽的元素element,element:div,p,選擇所有的div標簽元素和所有p標簽的元素elementelement:divp,選擇div標簽元素內部的所有p標簽元素element>element:div>p,選擇父元素為div標簽元素的所有p標簽元素element+element:div+p,選擇緊接在div元素之后的所有p元素[attribute]:[target],選擇帶有target屬性的所有元素[attritube=value]:[target=_blank],選擇target=”_blank”的所有元素[attritube~=value]:[title~=flower],選擇title屬性包含單詞‘flower’的所有元素[attritube|=value]:[lang|=en],選擇lang屬性值以‘en’開頭的所有元素(css2)(selenium用不到):linka:link,選擇所有未被訪問的鏈接:visiteda:visited,選擇所有已被訪問的鏈接:activea:active,選擇活動鏈接:hovera:hover,選擇鼠標指針位于其上的鏈接:focusinput:focus,選擇獲得焦點的input元素:first-letterp:first-letter,選擇每個p標簽元素的首字母(獲取p標簽包含文本的首字母):first-linep:first-line,選擇每個p標簽元素的首行(獲取p標簽包含文本的首行):first-childp:first-child,選擇屬于父元素的第一個子元素的每個p標簽元素:beforep:before,在每個p標簽元素的內容之前插入內。(樣式指定內容插入到p標簽包括的文本之前):afterp:after,在每個p標簽元素的內容之后插入內容。(樣式指定內容插入到p標簽包括的文本之后):lang(language)p:lang(it),選擇的lang屬性值等于it的每個p標簽元素element1~element2p~ul,選擇前面有p標簽元素的每一個ul標簽元素(只要前面有p標簽都可以,不管跨不跨標簽,也不管是不是子標簽)[attribute^=value]a[src^=’https’],選擇其src屬性以’https’開頭的每個a標簽元素[attribute$=value]a[src$=’.pdf’],選擇其src屬性以’.pdf’結尾的所有a標簽元素[attribute*=value]a[src*=’abc’],選擇其src屬性包含’abc’子串的每個a標簽元素:first-of-typep:first-of-type,選擇父元素的首個p標簽元素的每個p標簽元素(所有p標簽對應的父標簽的第一個子p標簽元素):last-of-typep:last-of-type,選擇父元素的最后一個p標簽元素的每個p標簽元素(所有p標簽對應的父標簽的最后一個子p標簽元素):only-of-typep:only-of-type,選擇父元素里面唯一的p標簽元素的每個p標簽元素(所有p標簽對應的父標簽元素只有一個子p標簽元素):only-childp:only-child,選擇父元素里面只有一個標簽的每個p標簽元素(父標簽里面只有一個p標簽):nth-child(n)p:nth-child(2),選擇屬于父元素的第二個子元素的每個p標簽元素(所有的p標簽的父標簽對應的第二個子標簽元素):nth-last-child(n)p:nth-last-child(2),選擇屬于父元素的倒數第二個子元素的每個p標簽元素(所有的p標簽的父標簽對應的倒數第二個子標簽元素):nth-of-type(n)p:nth-of-type(2),選擇屬于其父標簽元素的第二個p標簽的每個p標簽元素(所有p標簽對應的父標簽的第二個p標簽元素,也就是這個和p標簽平級):nth-last-of-type(n)p:nth-last-of-type(2),選擇屬于其父標簽元素的倒數第二個p標簽的每個p標簽元素(所有p標簽對應的父標簽的倒數第二個p標簽元素,也就是這個和p標簽平級):last-childp:last-child,選擇屬于其父標簽元素最后一個子元素是p標簽的每個p標簽元素(父標簽的最后一個標簽必須是p標簽):root:root,選擇文檔的根元素:emptyp:empty,選擇沒有子元素的每個p標簽元素(包括文本節點,無法理解):target#news:target,選擇當前活動的#news元素(錨點定位):enabledinput:enabled,選擇每個啟用input標簽元素(input文本可編輯):disabledinput:disabled,選擇每個禁用input標簽元素(input文本不可編輯):checkedinput:checked,選擇每個被選中的input標簽元素:not(selector):not(p),選擇非p標簽元素的每個元素::selection::selection,選擇被用戶選取的元素部分(選取文本會被樣式控制)selenium通過css定位常用的有:通過class定位,一個標簽有多個class中間的空格用點代替,通過父標簽的父標簽定位p,在通過p定位子標簽input,通過標簽+class定位#elementelement:divp,選擇div標簽元素內部的所有p標簽元素#element>element:div>p,選擇父元素為div標簽元素的所有p標簽元素#elementelement:divp,選擇div標簽元素內部的所有p標簽元素#element>element:div>p,選擇父元素為div標簽元素的所有p標簽元素#element+element:div+p,選擇緊接在div元素之后的所有p元素#id:#firstname,選擇id=‘fistname’的所有元素#[attritube=value]:[target=_blank],選擇target=”_blank”的所有元素#[attribute]:[target],選擇帶有target屬性的所有元素#[attritube~=value]:[title~=flower],選擇title屬性包含單詞‘flower’的所有元素#:first-childp:first-child,選擇屬于父元素的第一個子元素的每個p標簽元素#[attribute^=value]a[src^=’https’],選擇其src屬性以’https’開頭的每個a標簽元素#[attribute$=value]a[src$=’.pdf’],選擇其src屬性以’.pdf’結尾的所有a標簽元素#[attribute*=value]a[src*=’abc’],選擇其src屬性包含’abc’子串的每個a標簽元素#:first-of-typep:first-of-type,選擇父元素的首個p標簽元素的每個p標簽元素(所有p標簽對應的父標簽的第一個子p標簽元素)#:last-of-typep:last-of-type,選擇父元素的最后一個p標簽元素的每個p標簽元素(所有p標簽對應的父標簽的最后一個子p標簽元素)#:only-of-typep:only-of-type,選擇父元素里面唯一的p標簽元素的每個p標簽元素(所有p標簽對應的父標簽元素只有一個子p標簽元素)#:nth-child(n)p:nth-child(2),選擇屬于父元素的第二個子元素的每個p標簽元素(所有的p標簽的父標簽對應的第二個子標簽元素)#:only-childp:only-child,選擇父元素里面只有一個標簽的每個p標簽元素(父標簽里面只有一個p標簽)#:nth-last-child(n)p:nth-last-child(2),選擇屬于父元素的倒數第二個子元素的每個p標簽元素(所有的p標簽的父標簽對應的倒數第二個子標簽元素)#:nth-of-type(n)p:nth-of-type(2),選擇屬于其父標簽元素的第二個p標簽的每個p標簽元素(所有p標簽對應的父標簽的第二個p標簽元素,也就是這個和p標簽平級)#鼠標放上懸浮選擇菜單ActionChains(browser).move_to_element(article).perform()需要導入ActionChains包fromselenium.webdriver.common.action_chainsimportActionChains#:nth-last-of-type(n)p:nth-last-of-type(2),選擇屬于其父標簽元素的倒數第二個p標簽的每個p標簽元素(所有p標簽對應的父標簽的倒數第二個p標簽元素,也就是這個和p標簽平級)#:last-childp:last-child,選擇屬于其父標簽元素最后一個子元素是p標簽的每個p標簽元素(父標簽的最后一個標簽必須是p標簽)#coding=utf-8fromseleniumimportwebdriverimporttimefromselenium.webdriver.common.action_chainsimportActionChainsbrowser=webdriver.Chrome()browser.maximize_window()browser.get(地址)#通過class定位,一個標簽有多個class中間的空格用點代替browser.find_element_by_css_selector(.ant-input.inp.mt28).send_keys(ceshi)#通過父標簽的父標簽定位p,在通過p定位子標簽inputbrowser.find_element_by_css_selector(div.login-main>p:nth-child(2)>input).send_keys()#通過標簽+class定位browser.find_element_by_css_selector(button.ant-btn.ant-btn-primary).click()time.sleep(1)#elementelement:divp,選擇div標簽元素內部的所有p標簽元素browser.find_element_by_css_selector(div.icon-pass-change-divi).click()time.sleep(1)#element>element:div>p,選擇父元素為div標簽元素的所有p標簽元素browser.find_element_by_css_selector(button.ant-modal-close>span).click()time.sleep(1)#element+element:div+p,選擇緊接在div元素之后的所有p元素browser.find_element_by_css_selector(div.user-name+div>i).click()time.sleep(1)#id:#firstname,選擇id=‘fistname’的所有元素browser.find_element_by_css_selector(#sourcePwd).send_keys(wafer123)#[attritube=value]:[target=_blank],選擇target="_blank"的所有元素browser.find_element_by_css_selector(#newPassword[type="password"]).send_keys()#[attribute]:[target],選擇帶有target屬性的所有元素browser.find_element_by_css_selector(#confirmPassword[placeholder]).send_keys()#[attritube~=value]:[title~=flower],選擇title屬性包含單詞‘flower’的所有元素browser.find_element_by_css_selector(button[class~=ant-btn]:nth-child(1)).click()#:first-childp:first-child,選擇屬于父元素的第一個子元素的每個p標簽元素time.sleep(1)browser.find_element_by_css_selector(.dept-chose-icon>i:first-child).click()time.sleep(1)#[attribute^=value]a[src^=https],選擇其src屬性以https開頭的每個a標簽元素browser.find_element_by_css_selector(button[aria-label^="Close"]>span).click()time.sleep(1)#[attribute$=value]a[src$=.pdf],選擇其src屬性以.pdf結尾的所有a標簽元素browser.find_element_by_css_selector(i[class$="anticonanticon-plus-circle-o"]).click()time.sleep(1)#[attribute*=value]a[src*=abc],選擇其src屬性包含abc子串的每個a標簽元素browser.find_element_by_css_selector(.ant-modal-body>span[class*="ant-select"]).click()time.sleep(1)#:first-of-typep:first-of-type,選擇父元素的首個p標簽元素的每個p標簽元素(所有p標簽對應的父標簽的第一個子p標簽元素)browser.find_element_by_css_selector(.ant-select-tree>li:first-of-type).click()time.sleep(0.5)#:last-of-typep:last-of-type,選擇父元素的最后一個p標簽元素的每個p標簽元素(所有p標簽對應的父標簽的最后一個子p標簽元素)browser.find_element_by_css_selector(.ant-modal-footer>button:last-of-type).click()time.sleep(0.5)#:only-of-typep:only-of-type,選擇父元素里面唯一的p標簽元素的每個p標簽元素(所有p標簽對應的父標簽元素只有一個子p標簽元素)browser.find_element_by_css_selector(.dept-chose-icon>i:only-of-type).click()time.sleep(0.5)#:nth-child(n)p:nth-child(2),選擇屬于父元素的第二個子元素的每個p標簽元素(所有的p標簽的父標簽對應的第二個子標簽元素)browser.find_element_by_css_selector(.ant-modal-footer>button:nth-child(1)).click()time.sleep(0.5)#:only-childp:only-child,選擇父元素里面只有一個標簽的每個p標簽元素(父標簽里面只有一個p標簽)browser.find_element_by_css_selector(.ant-menu-submenu-title>i:only-child).click()#:nth-last-child(n)p:nth-last-child(2),選擇屬于父元素的倒數第二個子元素的每個p標簽元素(所有的p標簽的父標簽對應的倒數第二個子標簽元素)browser.find_element_by_css_selector(#item_0$Menu>li:nth-last-child(2)).click()#id里面有$符號需要轉義一下time.sleep(0.5)#:nth-of-type(n)p:nth-of-type(2),選擇屬于其父標簽元素的第二個p標簽的每個p標簽元素(所有p標簽對應的父標簽的第二個p標簽元素,也就是這個和p標簽平級)article=browser.find_element_by_css_selector(.ant-menu-submenu-title>i:nth-of-type(1))#鼠標放上懸浮選擇菜單ActionChains(browser).move_to_element(article).perform()需要導入ActionChains包ActionChains(browser).move_to_element(article).perform()time.sleep(0.5)#:nth-last-of-type(n)p:nth-last-of-type(2),選擇屬于其父標簽元素的倒數第二個p標簽的每個p標簽元素(所有p標簽對應的父標簽的倒數第二個p標簽元素,也就是這個和p標簽平級)browser.find_element_by_css_selector(#item_0$Menu>li:nth-last-of-type(2)).click()time.sleep(1)#:last-childp:last-child,選擇屬于其父標簽元素最后一個子元素是p標簽的每個p標簽元素(父標簽的最后一個標簽必須是p標簽)browser.find_element_by_css_selector(.user-info>div:last-child).click()time.sleep(0.5)browser.find_element_by_css_selector(.ant-confirm-btns>button:nth-child(2)).click()browser.close()