1. 程式人生 > >python+selenium二:定位方式 python+selenium二:定位方式

python+selenium二:定位方式 python+selenium二:定位方式

python+selenium二:定位方式

 
# 八種單數定位方式:element
from selenium import webdriver
import time


driver = webdriver.Firefox()
time.sleep(2) # 等待2秒
driver.get('https://www.baidu.com')


1、id定位:find_element_by_id()
# 定位到輸入框,輸入“中文”

time.sleep(2)
driver.find_element_by_id('kw').send_keys('中文')



2、name定位:find_element_by_name()
# 根據name定位到百度貼吧的輸入框,輸入“你好”

driver.find_element_by_name('kw1').send_keys('你好')

 




3、class定位:find_element_by_class_name()
# 當class唯一時,才能使用此方法
# 根據class屬性找到輸入框,輸入“你好”

driver.find_element_by_class_name('s_ipt').send_keys('你好')


4、根據標籤名定位:find_element_by_tag_name() (由於標籤名不唯一,不建議用此方法)

driver.find_element_by_tag_name('body')
# 獲取定位元素下的文字資訊
t = driver.find_element_by_tag_name('body').text
print(t)



5、link定位(連結):find_element_by_link_text()
# <a class="mnav" name="tj_trnews" href="http://news.baidu.com">新聞</a>
# href="http://news.baidu.com": 一般為link屬性
# 根據link的文字內容“新聞”定位到link連結
driver.find_element_by_link_text('新聞').click()

6、partial_link定位

# 當代表link連結的文字內容過長時,可使用此方式擷取部分文字定位
driver.find_element_by_partial_link_text('hao').click()


7、Xpath定位:find_element_by_xpath()

 


driver.find_element_by_xpath(".//*[@id='u1']/a[3]").click()

 



8、CSS定位:find_element_by_css_selector()(不唯一)

driver.find_element_by_css_selector("#kw").send_keys("你好")

 

 
  
複數定位方式:elements    (對元素不唯一)
# 以id為例:
# 單數定位:
driver.find_element_by_id('kw').send_keys('中文')
# 複數定位:根據找出的元素的下標定位
elements = driver.find_elements_by_id('kw')
print(len(elements)) # 當不清楚定位到幾個元素的時候,可以用此方法打印出來篩選
elements[0].send_keys('中文')

 


# 當class屬性有多個的時候,帶空格
# 當有多個class屬性的時候,此空格並不是空的字串,而是此class具有多重屬性
# class="search_ipt search_inp_border j_search_input tb_header_search_input"
# 貼吧輸入框
# 確定其中某一個屬性是唯一以後,取此屬性即可
driver.find_element_by_class_name("search_ipt").send_keys("你好")

 

# 八種單數定位方式:element
from selenium import webdriver
import time


driver = webdriver.Firefox()
time.sleep(2) # 等待2秒
driver.get('https://www.baidu.com')


1、id定位:find_element_by_id()
# 定位到輸入框,輸入“中文”

time.sleep(2)
driver.find_element_by_id('kw').send_keys('中文')



2、name定位:find_element_by_name()
# 根據name定位到百度貼吧的輸入框,輸入“你好”

driver.find_element_by_name('kw1').send_keys('你好')

 




3、class定位:find_element_by_class_name()
# 當class唯一時,才能使用此方法
# 根據class屬性找到輸入框,輸入“你好”

driver.find_element_by_class_name('s_ipt').send_keys('你好')


4、根據標籤名定位:find_element_by_tag_name() (由於標籤名不唯一,不建議用此方法)

driver.find_element_by_tag_name('body')
# 獲取定位元素下的文字資訊
t = driver.find_element_by_tag_name('body').text
print(t)



5、link定位(連結):find_element_by_link_text()
# <a class="mnav" name="tj_trnews" href="http://news.baidu.com">新聞</a>
# href="http://news.baidu.com": 一般為link屬性
# 根據link的文字內容“新聞”定位到link連結
driver.find_element_by_link_text('新聞').click()

6、partial_link定位

# 當代表link連結的文字內容過長時,可使用此方式擷取部分文字定位
driver.find_element_by_partial_link_text('hao').click()


7、Xpath定位:find_element_by_xpath()

 


driver.find_element_by_xpath(".//*[@id='u1']/a[3]").click()

 



8、CSS定位:find_element_by_css_selector()(不唯一)

driver.find_element_by_css_selector("#kw").send_keys("你好")

 

 
複數定位方式:elements    (對元素不唯一)
# 以id為例:
# 單數定位:
driver.find_element_by_id('kw').send_keys('中文')
# 複數定位:根據找出的元素的下標定位
elements = driver.find_elements_by_id('kw')
print(len(elements)) # 當不清楚定位到幾個元素的時候,可以用此方法打印出來篩選
elements[0].send_keys('中文')

 


# 當class屬性有多個的時候,帶空格
# 當有多個class屬性的時候,此空格並不是空的字串,而是此class具有多重屬性
# class="search_ipt search_inp_border j_search_input tb_header_search_input"
# 貼吧輸入框
# 確定其中某一個屬性是唯一以後,取此屬性即可
driver.find_element_by_class_name("search_ipt").send_keys("你好")