15.selenium_case02

本文介绍了一个使用Selenium和ChromeDriver实现的简单爬虫程序,该程序可以抓取今日头条网站上的新闻链接及标题。
# 抓取今日头条的新闻链接

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait

option = webdriver.ChromeOptions()
# option.add_argument('headless')

driver = webdriver.Chrome(
    executable_path='/usr/local/bin/chromedriver',
    chrome_options=option
)

# 今日头条
url = 'https://www.toutiao.com'

driver.get(url)
# print(driver.page_source)

timeout = 5
coin_links = WebDriverWait(driver, timeout).until(
    lambda d: d.find_elements_by_xpath('//div[@ga_event="article_title_click"]/a')
)

for item in coin_links:
    print(item.text)
    print(item.get_attribute('href'))

 

转载于:https://www.cnblogs.com/hankleo/p/10633644.html

import unittest from time import sleep from selenium.webdriver import Keys from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By from unittestreport import ddt, yaml_data from config.congfig import Host, PATH from page.login import login @ddt class Sim(unittest.TestCase): def setUp(self): """测试环境初始化""" self.browser = login() self.browser.get(Host) def tearDown(self): """资源清理""" self.browser.quit() @yaml_data(PATH + r'\data\sim.yaml') def test_sim(self, data): # 选择sim管理模块 global result self.browser.find_element(By.XPATH, '//*[@id="app"]/div/div[1]/div[2]/div[1]/div/ul/div[3]/li/div').click() self.browser.find_element(By.XPATH, '//*[@id="app"]/div/div[1]/div[2]/div[1]/div/ul/div[3]/li/ul/div[1]/a/li').click() sleep(5) self.browser.find_element(By.XPATH, '//*[@id="app"]/div/div[2]/section/div/div[2]/div/form/div[1]/div/div/input').send_keys( data['SN']) self.browser.find_element(By.XPATH, '//*[@id="app"]/div/div[2]/section/div/div[2]/div/form/div[4]/div/div/input').send_keys( data['IMSI']) self.browser.find_element(By.XPATH, '//*[@id="app"]/div/div[2]/section/div/div[2]/div/form/div[2]/div/div/input').send_keys( data['ICCID']) # 点击查询 self.browser.find_element(By.XPATH, '//*[@id="app"]/div/div[2]/section/div/div[2]/div/form/div[5]/div/button/span').click() sleep(6) # 获取结果信息 if data['type'] == "pass": result = self.browser.find_element(By.XPATH, '//*[@id="app"]/div/div[2]/section/div/div[5]/div/span[1]').text elif data['type'] == "sz": result = self.browser.find_element(By.XPATH, '//*[@id="app"]/div/div[2]/section/div/div[4]/div[3]/table/tbody/tr[1]/td[4]/div').text elif data['type'] == "error": result = self.browser.find_element(By.XPATH, '//*[@id="app"]/div/div[2]/section/div/div[4]/div[3]/div/span').text elif data['type'] == "syy": self.browser.find_element(By.XPATH, '//*[@id="app"]/div/div[2]/section/div/div[5]/div/button[1]').click() # 定位输入框 input_element = WebDriverWait(self.browser, 10).until( EC.presence_of_element_located( (By.CSS_SELECTOR, 'div.el-pagination__editor input.el-input__inner') ) ) # 等待分页加载完成(根据实际页面元素调整) WebDriverWait(self.browser, 10).until( EC.presence_of_element_located((By.CSS_SELECTOR, '.el-table__body')) ) # 通过 JS 获取输入框的值 result = self.browser.execute_script( "return arguments[0].value", input_element ) elif data['type'] == "xyy": self.browser.find_element(By.XPATH, '//*[@id="app"]/div/div[2]/section/div/div[5]/div/button[2]/i').click() # 定位输入框 input_element = WebDriverWait(self.browser, 10).until( EC.presence_of_element_located( (By.CSS_SELECTOR, 'div.el-pagination__editor input.el-input__inner') ) ) # 等待分页加载完成(根据实际页面元素调整) WebDriverWait(self.browser, 10).until( EC.presence_of_element_located((By.CSS_SELECTOR, '.el-table__body')) ) # 通过 JS 获取输入框的值 result = self.browser.execute_script( "return arguments[0].value", input_element ) elif data['type'] == "ymxz": self.browser.find_element(By.XPATH, '//*[@id="app"]/div/div[2]/section/div/div[5]/div/ul/li[3]').click() # 定位输入框 input_element = WebDriverWait(self.browser, 10).until( EC.presence_of_element_located( (By.CSS_SELECTOR, 'div.el-pagination__editor input.el-input__inner') ) ) # 等待分页加载完成(根据实际页面元素调整) WebDriverWait(self.browser, 10).until( EC.presence_of_element_located((By.CSS_SELECTOR, '.el-table__body')) ) # 通过 JS 获取输入框的值 result = self.browser.execute_script( "return arguments[0].value", input_element ) elif data['type'] == "ymsr": try: # 定位输入框 input_element = WebDriverWait(self.browser, 10).until( EC.presence_of_element_located( (By.CSS_SELECTOR, 'div.el-pagination__editor input.el-input__inner') ) ) input_element.send_keys(data['yema']) input_element.send_keys(Keys.RETURN) # 等待分页加载完成(根据实际页面元素调整) WebDriverWait(self.browser, 10).until( EC.presence_of_element_located((By.CSS_SELECTOR, '.el-table__body')) ) # 通过 JS 获取输入框的值 result = self.browser.execute_script( "return arguments[0].value", input_element ) except Exception as e: print(f"操作失败: {e}") self.browser.save_screenshot("error_screenshot.png") # 断言验证 self.assertIn(data['expected'], result, f"断言失败: 预期包含 '{data['expected']}',实际为 '{result}'uoyuo优化·一下代码
07-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值