在下面的 HTML 中,我的目標是回傳zzde7e35d-8d9d-4763-95d2-9198684abb12
<div class = container>
<a class="Blue-Button" data-type="patch" data-disable-with="Waiting" href="/market/opening/zzde7e35d-8d9d-4763-95d2-9198684abb12">Yes</a>
</div>
問題是,我什至無法在 div 中找到 URL
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
link = example.url
driver.get(link)
URL = driver.find_element_by_xpath('//a[contains(@href,"market")]')
print(URL)
列印上面的內容,我似乎得到了一堆與 HTML 完全無關的隨機字符,更不用說有問題的 URL。
如果它簡化了問題,回傳的字符數將始終是相同的長度,索引是一種簡單的解決方法嗎?
uj5u.com熱心網友回復:
如果你想得到href你需要使用的get_attribute('href')
this 會給你/market/opening/zzde7e35d-8d9d-4763-95d2-9198684abb12然后 split() this 你會得到最后一個元素。
link = example.url
driver.get(link)
URL = driver.find_element_by_xpath('//a[contains(@href,"market")]')
print(URL.get_attribute('href').split("/")[-1])
輸出:
zzde7e35d-8d9d-4763-95d2-9198684abb12
uj5u.com熱心網友回復:
您可能錯過了延遲。
代替
URL = driver.find_element_by_xpath('//a[contains(@href,"market")]')
嘗試使用
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
URL = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, '//a[contains(@href,"market")]'))).get_attribute("href")
print(URL)
此外,您還必須href從回傳的 Web 元素物件中提取屬性值,如代碼所示。
如果這仍然不起作用,請檢查您嘗試在 iframe 內訪問的元素是否等。或者定位器可能不是唯一的等。
uj5u.com熱心網友回復:
要列印href屬性的部分值,即zzde7e35d-8d9d-4763-95d2-9198684abb12您需要為visibility_of_element_located()引入WebDriverWait,您可以使用以下任一定位器策略:
使用LINK_TEXT:
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.LINK_TEXT, "Yes"))).get_attribute("href").split("/")[3])使用CSS_SELECTOR:
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "a.Blue-Button[data-type='patch'][data-disable-with='Waiting'][href*='market']"))).get_attribute("href").split("/")[3])使用XPATH:
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//a[@class='Blue-Button' and @data-type='patch'][@data-disable-with='Waiting' and contains(@href, 'market')]"))).get_attribute("href").split("/")[-1])注意:您必須添加以下匯入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
您可以在 Find div aria label 中找到相關的詳細討論,以某些文本開頭,然后提取
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/447296.html
