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'<button class="woo-button-main woo-button-flat woo-button-primary woo-button-m woo-button-round VideoUpload_btn1_2avmO" id="video_button_upload_(.*?)"><span class="woo-button-wrap"><!-- --><!-- --><!-- --><span class="woo-button-content">上传视频</span></span></button>')
    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:

相关推荐

  1. selenium元素定位总结 - xpath定位高级

    2024-07-17 15:54:02       32 阅读
  2. CSS和XPATH元素定位方法

    2024-07-17 15:54:02       27 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 15:54:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 15:54:02       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 15:54:02       58 阅读
  4. Python语言-面向对象

    2024-07-17 15:54:02       69 阅读

热门阅读

  1. ES6基本语法(一)

    2024-07-17 15:54:02       22 阅读
  2. 100道ajax面试题、练习题

    2024-07-17 15:54:02       21 阅读
  3. Flask与Django框架比较

    2024-07-17 15:54:02       20 阅读
  4. MPNN消息传递神经网络

    2024-07-17 15:54:02       25 阅读
  5. C# —— (左移 右移 异或 与 或 )运算规则

    2024-07-17 15:54:02       20 阅读
  6. 知识加油站

    2024-07-17 15:54:02       20 阅读
  7. 鹈鹕优化算法(POA)及其Python和MATLAB实现

    2024-07-17 15:54:02       22 阅读
  8. 互联网开发工作现状的深度剖析

    2024-07-17 15:54:02       20 阅读