簡體   English   中英

動態 ID - 如何在 Python 中單擊帶有 selenium 的動態按鈕

[英]Dynamic ID - How to click a dynamic button with selenium in Python

該按鈕是一個副本; 復制上方框中的文件共享鏈接。 這是我的嘗試:

getLink = driver.find_element_by_xpath("""//*[starts-with(@id, "ic0") and contains(@id, "544")]""").click()

仍然沒有工作。 class 是“#c0-5443772”,但它是動態的。

感謝幫助,伙計們!

HTML 頁面代碼: https://codeshare.io/2WxgOy頁面截圖:

PNG

要單擊可下載鏈接的復制按鈕,您可以使用以下 xpath:

//h2[text()='Download Link']//following-sibling::button

同樣,您可以將以下 Xpath 用於論壇鏈接

//h2[text()='Link for forums']//following-sibling::button

對於最后一個和第四個按鈕,您可以使用以下 xpath:

//h2[text()='Embed code']//following-sibling::button

對於粘貼,您可以使用 pyperclip

確保使用 pip pip install pyperclip

paste_string= pc.paste();
  
print(paste_string)

更新1:

from time import sleep
import tkinter as tk
import clipboard as clipboard
import pyautogui as pyautogui
import pyperclip as pyperclip
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import pandas as pd

driver = webdriver.Chrome("C:\\Users\\Desktop\\Selenium+Python\\chromedriver.exe")
driver.maximize_window()
wait = WebDriverWait(driver, 100)
driver.get("https://www.streamsb.com/login.html")

#   Login

user = driver.find_element_by_css_selector("#login > div > form > div:nth-child(3) > div > input[type=text]").send_keys("Enter here")
password = driver.find_element_by_css_selector("#login > div > form > div:nth-child(4) > div > input[type=password]").send_keys("Enter here")
enter = driver.find_element_by_css_selector("#login > div > form > div:nth-child(7) > div > input[type=submit]").click()
#   Navigation and upload
driver.find_element_by_css_selector("#mAcct > div.mnu > div > ul > li:nth-child(1) > a").click()
driver.find_element_by_css_selector("#mainmenu > ul > li:nth-child(2) > a").click()
driver.find_element_by_css_selector("#filepc").send_keys("C:\\Selenium+Python\\file_example_MP4_480_1_5MG.mp4")

uploadButton = driver.find_element_by_class_name("upload-form-button").click()

copy_button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'button.btndiv')))

print("before clicking copy button.")
copy_button.click()

text = clipboard.paste() # text will have the content of clipboard
print(text)

4 個標簽有四個副本 Html 代碼,每個標簽都有不同的 id,但 class 相同。 所以你可以使用你的 XPath 這樣的東西。

"//h2[contains(.,'"+tabName+"')]//following-sibling::button"

這里選項卡名稱是作為選項卡名稱值傳遞的變量,例如。

//h2[contains(.,'Download Link')]//following-sibling::button

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM