[英]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頁面截圖:
要單擊可下載鏈接的復制按鈕,您可以使用以下 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.