我無法從此特定網頁訪問輸入元素。http://prod.symx.com/MTECorp/config.asp?cmd=edit&CID=428D77C8A7ED4DA190E6170116F3A71B 如果網頁超時,請繼續點擊下面的這個鏈接 https://www.mtecorp.com/click-find/ 然后單擊超鏈接“RL_reactors”將您帶到該頁面。在此頁面上,我目前正在嘗試訪問網頁的搜索欄/輸入元素以輸入公司銷售的零件編號。這是用于學校專案并從不同公司收集資料用于定價等。我正在使用 pycharm(python) 和 selenium 撰寫此腳本。目前,這是我目前的代碼片段
# web scrapping for MTE product cost list
# reading excel files on the drive
import time
from openpyxl import workbook, load_workbook
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
from selenium.common.exceptions import TimeoutException
.........................
..more code
..........................
#part that is getting stuck on
if((selection >= 1) and (selection <= 7)):
print("valid selection going to page...")
if(selection == 1):
target=driver.find_element(By.XPATH,"/html/body/main/article/div/div/div/table/tbody/tr[1]/td[1]/a")
driver.execute_script("arguments[0].click();", target)
element = WebDriverWait(driver,100).until(EC.element_to_be_clickable((By.CSS_SELECTOR,".plxsty_pid"))).send_keys("test")
print("passed clickabel element agruement\n")
目前,我的代碼確實轉到 RL_reactors 頁面,如下所示,但是當我按類名使用 CSS 選擇器時,它無法識別我試圖獲取的型別別。現在當然很多人會說為什么不使用 XPath 等。我不能使用 XPath 等的原因是元素 id 隨腳本的每次迭代而變化。因此,例如,程式 id 名稱的第一次運行將是“hr8”,而對于其他腳本,程式名稱可能是“dsfsih”。根據我的觀察,元素中唯一保持不變的部分是值和類名。我曾嘗試使用 XPath、id、ccselector 等,但沒有結果。任何建議謝謝!
uj5u.com熱心網友回復:
因為您正在使用 javascript 單擊您網站上的鏈接,所以 selenium 不會更改選項卡(因此它無法找到您正在搜索的類)。您可以明確告訴 selenium 更改選項卡視窗。
url = "https://www.mtecorp.com/click-find/"
driver.get(url)
target_link=driver.find_element(By.XPATH,"/html/body/main/article/div/div/div/table/tbody/tr[1]/td[1]/a")
target=driver.find_element(By.XPATH,"/html/body/main/article/div/div/div/table/tbody/tr[1]/td[1]/a")
driver.execute_script("arguments[0].click();", target)
driver.switch_to.window(driver.window_handles[1])
element = WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,".plxsty_pid"))).clear()
element = WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,".plxsty_pid"))).send_keys('test')
或者,您可以通過driver.get()再次呼叫獲取 href 并在 selenium 的新實體中打開它,而不是單擊鏈接。
url = "https://www.mtecorp.com/click-find/"
driver.get(url)
target_link=driver.find_element(By.XPATH,"/html/body/main/article/div/div/div/table/tbody/tr[1]/td[1]/a").get_attribute('href')
driver.get(target_link)
element = WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,".plxsty_pid"))).clear()
element = WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,".plxsty_pid"))).send_keys("test")
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/338298.html
上一篇:如何通過分頁導航?(硒)
