我試圖進入提交按鈕后面的URL:
from selenium import webdriver
browser = webdriver.Safari(executable_path = '/usr/bin/safaridriver' )
#填寫所需的欄位'111'。
browser.get('https://trackapkg.com/aramex-tracking-number')
field = browser.find_element_by_xpath('//*[@id="ShipmentNumber"] ')
field.send_keys(default_input)
url = browser.current_url
#點擊提交按鈕,獲得新的URL。
browser.find_element_by_xpath("//span[@class='input-group-btn']"/span>).click()。
while url == browser.current_url:
time.sleep(5)
url = browser.current_url
print(url)
Submitting works (though inconsistentently), but apparently there is an issue with Xpath to the button itself so it's not clicked and the URL can't be caught. 我已經嘗試了多種變體:
browser.find_element_by_xpath("//*[@id='ShipmentNumber']/input[@class='btn btn-success']"/span>).click()
或者這樣:
browser.find_element_by_xpath("//input[@class='btn btn-success']").click()
但仍然可以找到解決方案。我將感謝你的建議
uj5u.com熱心網友回復:
錯誤可能是沒有等到元素可以被點擊。你可以使用
from selenium.webdriver.support.ui import WebDriverWait
submit = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, "//input[@class='btn btn-success']"/span>))
提交.點擊()
uj5u.com熱心網友回復:
如果在Safari瀏覽器上點擊按鈕是間歇性的。那么這里有一個變通方法。你可以使用回車鍵來點擊搜索框。
default_input = '111'
browser.get('https://trackapkg.com/aramex-tracking-number')
field = browser.find_element_by_xpath('//*[@id="ShipmentNumber"] ')
field.send_keys(default_input)
field.send_keys(Keys.ENTER)
你需要匯入以下庫。
你需要匯入以下庫。
from selenium.webdriver.common.keys import Keys
因此,你的代碼塊會是這樣的
default_input = '111'/span>
browser.get('https://trackapkg.com/aramex-tracking-number')
field = browser.find_element_by_xpath('//*[@id="ShipmentNumber"] ')
field.send_keys(default_input)
url = browser.current_url
field.send_keys(Keys.ENTER)# press enter key for search。
time.sleep(1) # 等待1秒進行檢查。
while url == browser.current_url:
time.sleep(5)
url = browser.current_url
print(url)
uj5u.com熱心網友回復:
需要注意的事項。
使用Explicit waits以獲得更多的穩定性
使用相對的xpath,喜歡css而不是xpath。另外我看到id和'Name'是唯一的,所以使用id和'Name'而不是xpath。請看下面的插圖。
在全屏模式下啟動瀏覽器
當我們點擊GO時,它會打開一個新標簽,在Selenium中,我們必須在訪問新標簽中的任何內容之前首先切換到新標簽。
示例代碼:
from selenium import webdriver
browser = webdriver.Safari(executable_path = '/usr/bin/safaridriver' )
browser.maximate_window()
browser.implicitly_wait(50)
wait = WebDriverWait(browser, 20)
driver.get("https://trackapkg.com/aramex-tracking-number")
default_input = '111'/span>
field = wait.until(EC.visibility_of_element_located((By.ID, "ShipmentNumber") )
field.send_keys(default_input)
url = browser.current_url
print('current url'/span>, url)
#點擊提交按鈕以獲得新的URL。
wait.until(EC.element_to_be_clickable((By.NAME, "track") ).click()
time.sleep(5)
#When we click on GO, it opens a new tab, in Selenium we have to switch to new tab first before accessing anything in the new tab.
all_handles = browser.window_handles
browser.switch_to.window(all_handles[1] )
new_url = browser.current_url
print('new url',new_url)
輸出 :
current url https://trackapkg.com/aramex-tracking-number
新網址 https://www.aramex.com/in/en/track/shipment-details? q=c2hpcG1lbnRJZD0xMTEmcHJvZHVjdEdyb3VwPUZSVCZzaGlwbWVudFR5cGU9Y2FyZ293aXNlJnNlYXJjaE1vZGU9YnlJZCY=-nc4VTy84z6w=
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/309743.html
標籤:

