selenium定位这种标签该怎么写

img

img


我想定位这个上面的标签excel流式导出,这个标签缓冲好后才能点击,下面我写的代码但是定位不到
element = WebDriverWait(driver, 55, 4).until(ec.element_to_be_clickable((By.XPATH, '//*[@class="fr-btn-up fr-btn-text-icon fr-btn-over"]')))
print(element)
element.click()
真心不会啊,本人不太懂,能否全面解答下,谢谢

浏览器装个xpath插件,方便调试 https://blog.csdn.net/weixin_43847283/article/details/125571325

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7683825
  • 你也可以参考下这篇文章:python+selenium自动化测试,元素定位脚本都未写错但是报错。可能是页面元素未加载完成就去执行下一步。需要加等待
  • 除此之外, 这篇博客: selenium处理网页下拉加载数据爬取并存入excel中的 完整代码 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • import pandas as pd
    from pandas import DataFrame
    import unittest
    import time
    from selenium import webdriver
    from selenium.webdriver.support.ui import Select
    from selenium.webdriver.support.select import Select
    from selenium.webdriver.support.ui import WebDriverWait
    
    class autoLogin(unittest.TestCase):
    	
    	URL = 'http://zhidao.baidu.com/business/profile?id=87701'
    
    
    	@classmethod
    	def setUpClass(cls):
    		cls.driver = webdriver.Firefox()
    		cls.driver.implicitly_wait(20)
    		cls.driver.maximize_window()
    
    		
    	
    	def test_search_by_selenium(self):
    		self.driver.get(self.URL)
    		self.driver.title
    		time.sleep(1)
    		#将滚动条移动到页面的底部
    		all_window_height =  []
    		all_window_height.append(self.driver.execute_script("return document.body.scrollHeight;"))
    		while True:
    			self.driver.execute_script("scroll(0,100000)") 
    			time.sleep(3)
    			check_height = self.driver.execute_script("return document.body.scrollHeight;")
    			if check_height == all_window_height[-1]:  
    				print("我已下拉完毕")
    				break
    			else:
    				all_window_height.append(check_height) 
    				print("我正在下拉")
    				
    	@classmethod
    	def tearDownClass(cls):
    		html=cls.driver.page_source
    		problem = cls.driver.find_elements_by_css_selector("li h2.item-title a")
    		data = pd.read_excel('example.xlsx', sheet_name = 'Sheet1')
    		row = 1
    		for i in problem:
    		    data.loc[row,'问题'] = i.text
    		    row += 1
    		row = 1
    		reply = cls.driver.find_elements_by_css_selector("div.item-right p")
    		for j in reply:
    		    data.loc[row,'答案'] = j.text
    		    row += 1
    		    
    		DataFrame(data).to_excel('test.xlsx', sheet_name='Sheet1')
    
    		#保存成网页
    		with open("index.html", "wb") as f:
    			f.write(html.encode())
    		f.close()
    		cls.driver.quit()
    
    if __name__ == '__main__':
    	unittest.main(verbosity=2)