在使用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
本文转载自: https://blog.csdn.net/tscaxx/article/details/129522406
版权归原作者 IT技术学习 所有, 如有侵权,请联系我们删除。
版权归原作者 IT技术学习 所有, 如有侵权,请联系我们删除。