0


Python学习笔记——selenium定位iframe和元素(快速定位)

在使用selenium过程,发现定位iframe、元素比较困难,所以制作一个辅助小工具。

一、selenium定位

# 1.导入库
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options
import traceback
import keyboard
from selenium.webdriver.common.by import By
import time

def test_a():
    global driver

    # 1.获得360浏览器(使用谷歌浏览器可忽略)
    __browser_url = r"D:\360极速浏览器\install\360Chrome\Chrome\Application\360chrome.exe"  # 换成自己的目录
    chrome_options = Options()
    chrome_options.binary_location = __browser_url

    # 2.获得驱动
    driver = Chrome(executable_path=r'drive/chromedriver.exe', options=chrome_options)
    # 3使用驱动 ,打开网页
    driver.get("https://www.csdn.net/")

    # 4.使用驱动,获取元素,操作元素

    # -------------------------第二轮定位调试页面(首次注释)-------------------------
    # 可以有多组,多次进入子iframe
    # a_frame = driver.find_elements(By.TAG_NAME, "iframe")
    # driver.switch_to.frame(a_frame[0])
    # --------------------------------------------------------------------

    # ======================获取当前界面的html代码==================
    file = open("当前界面.txt", mode='w', encoding='utf-8')
    file.write(driver.page_source)
    file.close()

    find_msg = input("请输入要查找的内容:")
    if find_msg in driver.page_source:
        print("当前界面,=====================>包含:{}".format(find_msg))
    else:
        print("当前界面,不包含:{}".format(find_msg))
    # =============================================================

    # 切换上到上一级
    #driver.switch_to.parent_frame()

    # =========================获取嵌入的iframe====================
    a_frame = driver.find_elements(By.TAG_NAME, "iframe")
    print("当前界面共有:", len(a_frame), "个iframe")

    for i in range(len(a_frame)):
        driver.switch_to.frame(a_frame[i])  # 切换到下一个界面

        # 1.将内容写入text,方便手动定位
        file = open("第{}个iframe.txt".format(i), mode='w', encoding='utf-8')
        file.write(driver.page_source)
        file.close()
        # 2.直接判断,当前是否包含目标:
        if find_msg in driver.page_source:
            print("第{}个里,=====================>包含:{}".format(str(i), find_msg))
        else:
            print("第{}个里,不包含:{}".format(str(i), find_msg))

        # 切换上到上一级iframe,为下一次循环做准备
        driver.switch_to.parent_frame()
        # 再次获取iframe
        a_frame = driver.find_elements(By.TAG_NAME, "iframe")
    # =============================================================

if __name__ == '__main__':
    try:
        print("a键开始")
        keyboard.add_hotkey('a', test_a)  # 按 a 调用 test_a函数
        keyboard.wait()  # 循环监听
    except Exception as e:
        traceback.print_exc()
        input("回车键结束:")

当前界面没有,调整driver位置

二、元素定位

1.Xpath定位

2,.其他定位方式

三、防止定位、操作失败

获取元素、操作失败重复操作,直至操作成功。

while True:
    try:
        #等待X秒
        #定位元素,操作
        break
    except:
        continue
标签: python 学习 selenium

本文转载自: https://blog.csdn.net/tscaxx/article/details/129522406
版权归原作者 IT技术学习 所有, 如有侵权,请联系我们删除。

“Python学习笔记——selenium定位iframe和元素(快速定位)”的评论:

还没有评论