鱼C论坛

 找回密码
 立即注册
查看: 1752|回复: 1

[已解决]想通过selenium获取元素,但一直失败,请帮忙看一下

[复制链接]
发表于 2022-7-16 19:10:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 黎前点星 于 2022-7-17 19:59 编辑

想通过selenium获取元素,但一直失败,请帮忙看一下
  1. '''
  2. Chrome浏览器的配置项
  3. '''
  4. from multiprocessing.connection import wait
  5. from time import sleep
  6. from xml.dom.minidom import Element
  7. from selenium import webdriver

  8. class Options:
  9.     def brow_options(self):
  10.         # 创建options对象:配置浏览器的设置
  11.         options = webdriver.ChromeOptions()
  12.         # 页面加载策略
  13.         options.page_load_strategy = 'eager'
  14.         # 去掉浏览器提示自动化黄条:没什么用处,只是为了好看而已。(附加去掉控制台多余日志信息)
  15.         options.add_experimental_option('excludeSwitches',['enable-automation','enable- logging'])
  16.         # 窗体最大化
  17.         # windows系统写法
  18.         # options.add_argument('start_maximized')
  19.         # mac系统写法
  20.         #options.add_argument('--start-fullscreen')
  21.         #禁用chrome的gpu加速,防止页面出现花屏
  22.         options.add_argument('--disable-gpu')
  23.         #忽略证书出错,可以一次性进入页面
  24.         options.add_argument("--ignore-certificate-errors");
  25.         # 1加载本地缓存地址
  26.         '''
  27.         1.windows,打开浏览器通过指令:chrome//:version查找缓存地址
  28.         2.mac系统缓存地址:/Users/xxx/Library/Caches/Google/Chrome/Default/Cache  xxx为用户名
  29.         3.通过传入本地缓存来实现缓存获取,参数:--user-data-dir
  30.         4.调用本地缓存时需要关闭所有正在应用的浏览器窗体
  31.         5。因为需要加载本地缓存,启动浏览器之后运行脚本的第一条指令会非常缓慢,如果要提速,手动输入一个请求url即可
  32.         6.一般不推荐使用,需要绕过验证码操作的时候可以添加
  33.         '''
  34.         # options.add_argument(r'--user-data-dir=/Users/xxx/Library/Caches/Google/Chrome/Default/Cache')
  35.         # 指定用户客户端-模拟手机浏览
  36.         # options.add_argument('User-Agent=Mozilla/5.0 (Linux; U; Android 8.1.0; zh-cn; BLA-AL00 Build/HUAWEIBLA-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/8.9 Mobile Safari/537.36')
  37.         # 添加配置去掉密码管理弹窗
  38.         prefs = dict()
  39.         prefs["credentials_enable_services"] = False
  40.         prefs["profiles.password_manager_enabled"] = False
  41.         
  42.         #prefs[‘chromeOptions’] = {‘w3c’:False}
  43.         #prefs[‘showChromedriverLog’] = True
  44.         
  45.         options.add_experimental_option('prefs',prefs)


  46.         # 无头模式:不在桌面实现浏览器的运行,作为后台静默运行,虽然看不到,但是一切照旧。
  47.         # 偶尔场景会有异常, 但很少
  48.         # selenium设置了headless,就会导致cmd控制台不断输出CONSOLE信息
  49.         # options.add_argument('--headless')
  50.         # 设置日志打印级别,小于3则不打印
  51.         # options.add_argument('--log-level=3')
  52.         # options.add_argument('--disable-gpu')
  53.         # options.add_argument('--ignore-certificate-errors')
  54.         # 隐身模式
  55.         # 隐身模式下无法调用selenium中的switch_to.new_window()函数
  56.         # options.add_argument('incognito')
  57.         # 指定窗口大小
  58.         # options.add_argument('-windows-size=1360,920')
  59.         # return这一步很重要。因为需要有options对象进行返回才可以对webdriver生效
  60.         return options
  61.         
  62. if __name__ == "__main__":
  63.     # 生成浏览器配置
  64.     options = Options().brow_options()
  65.     # 配置webdriver,新版本写法(python3以上)
  66.     # 老版本写法:driver = webdriver.Chrome(chrome_options=options)
  67.     driver = webdriver.Chrome(options=options)



  68.     sleep(5);

  69.   
  70.     #点击看不清,换一张验证码
  71.     #方法一  不行
  72.     element = driver.find_element("class","invisibe")
  73.     #方法二,也不行
  74.     #/html/body/div[2]/div/form/div[5]/span
  75.     #element=driver.find_element("XPATH","/html/body/div[2]/div/form/div[5]/span");
  76.     element.click();
复制代码
最佳答案
2022-7-16 22:44:03

  1. from selenium import webdriver
  2. from selenium.webdriver.common.by import By
  3. b = webdriver.Chrome()
  4. b.get('xxxx')
  5. b.find_element(By.CLASS_NAME, 'the class name you want to locate')
  6. b.find_element(By.XPATH, 'xpath pattern')

复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-7-16 22:44:03 | 显示全部楼层    本楼为最佳答案   

  1. from selenium import webdriver
  2. from selenium.webdriver.common.by import By
  3. b = webdriver.Chrome()
  4. b.get('xxxx')
  5. b.find_element(By.CLASS_NAME, 'the class name you want to locate')
  6. b.find_element(By.XPATH, 'xpath pattern')

复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-28 02:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表