码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • python用selenium网页模拟时xpath无法定位元素解决方法2


    有时我们在使用python selenium xpath时,无法定位元素,红字显示no such element。上一篇文章写了1种情况,是包含iframe的,详见https://blog.csdn.net/Sixth5/article/details/140342929。

    本篇写第2种情况,就是xpath定位的元素中有变化的数字,比如wb这个上传视频的网址,“上传视频”的按钮,我们点击copy xpath后,得到的xpath是//[@id=“video_button_upload_1721110144093”],这里面有数字1721110144093,它是随着网页变化的,刷新网页后又会变化,所以给我们用xpath定位增加了难度。
    在这里插入图片描述
    我们发现1721110144093这个数字在网页代码中是存在的,所以解决方法是使用正则定位抓取数字,然后拼接出xpath再用于定位元素。我们需要用到的代码如下,主要使用的是beautifulSoup读取网页,再用re正则(.
    ?)精准定位数字的位置,由于网页代码中有多个重复内容,所以使用list容器,再使用data[1],即list里的第一个元素,准确把数字提取出,然后拼接,就拿到最终的动态变化的xpath啦!!

    import time
    from selenium.webdriver import Chrome
    from selenium.webdriver.common.by import By
    from selenium import webdriver
    from bs4 import BeautifulSoup #网页解析,获取数据
    import re   #正则表达式,进行文字匹配
    
    web = Chrome()
    web.maximize_window()
    url = 'https://weibo.com/upload/channel'
    web.get(url)
    time.sleep(10)
    web.find_element(By.XPATH,'//*[@id="__sidebar"]/div/div[2]/div[1]/div/button').click() # 点击立即登录
    time.sleep(30)#扫码登录
    for i in range(0, 3):
        html = web.page_source
        #print(html)
        soup = BeautifulSoup(html, "html.parser")
        findLink = re.compile(r'')
        data = []
        for item in soup.find_all('button'):
          #  print(item)
            item = str(item)
            link = re.findall(findLink, item)
         #   print(link)
            data.append(link)
        code1 = ";".join(data[1])
        time.sleep(1)
        web.find_element(By.XPATH,'//*[@id="video_button_upload_'+ code1+'"]').click() # 点击上传视频
    

    另外附:
    解决方法3:

  • 相关阅读:
    Transformer模型 | Python实现TransformerCPI模型(pytorch)
    OpenMesh 获取网格面片各个顶点
    [思维]Knowledge Cards Codeforces1740D
    【洛谷题解/SDOI2012】P2303/SDOI2012 D1T1 Longge的问题
    【Nacos】服务发现数据模型
    静图表情包怎么做成动态图?动图表情包制作教程
    rabbitMQ(消息堆积问题)
    内存池的实现3 固定大小的allocator单线程内存配置器
    Vue --- router,params和query传递参数并接收
    基于随机油漆优化器 (MOSPO)求解多目标优化问题附matlab代码
  • 原文地址:https://blog.csdn.net/Sixth5/article/details/140344343
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号