这是正确的封装函数
from selenium import webdriver
from time import sleep
import requests
driver=webdriver.Chrome()
driver.get("http://baidu.com")
class Common(object):
def __init__(self):
self.driver = webdriver.Chrome()
def open(self,url,name):
self.driver.get(url)
driver.find_element_by_id("kw").send_keys(name)
driver.find_element_by_id("su").click()
def get_link(self):
for link in driver.find_elements_by_xpath('//*[@class="f13"]/a'):
a = link.get_attribute('href')
print(a)
if __name__ == '__main__':
com = Common()
com.open("http://www.baidu.com","新闻")
com.get_link()
com.driver.close()
sleep(2)
这个是之前错误的封装函数,只能通过Chrome搜索百度,然后自动在搜索框打出关键字新闻,但不能成功弹出搜索结果,大家可以对比看一下。
from lib2to3.pgen2 import driver
from selenium import webdriver
from time import sleep
import requests
class Common(object):
def __init__(self):
self.driver = webdriver.Chrome()
def open_url(self,url):
self.driver.get(url)
def locateElement(self,locate_type,value):
el=None
if locate_type == 'id':
el = self.driver.find_element_by_id('kw')
elif locate_type == 'xpath':
el = self.driver.find_elements_by_xpath('//*[@class="f13"]/a')
if el is not None:
return el
def click(self,locate_type,value):
el=self.locateElement(locate_type,value)
el.click()
def input_data(self,locate_type,value,data):
el=self.locateElement(locate_type,value)
el.send_keys(data)
def print_text(self,locate_type,value,text):
el=self.locateElement(locate_type.value)
el.print(text)
if __name__ == '__main__':
com = Common()
com.open_url("http://www.baidu.com")
com.locateElement('id','kw')
com.click('id','su')
com.input_data('id','kw','新闻')
com.print_text('xpath','//*[@class="f13"]/a/text()','')
sleep(2)
1、第17/18行的代码无意义。else无用
2、36行,print_text。但从xpath上看,在a后面/text()获取的是连接的内容,例如12345,拿到的是12345,所以没有得到我想要的href链接