如何查找站点的XPATH "MarineTraffic"搜索(python的selenium) -无



虽然我是Python新手,但在回答这个问题之前我已经搜索了几个小时。

你能告诉我如何正确地从网站www.marinetraffic.com搜索找到XPATH吗?

我认为搜索框可能在一个框架中,但我无法使它工作(即使在深入检查/学习了"SelectorsHub"扩展。

我的最新代码

from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import time
Path = "C:Seleniumchromedriver.exe"
S = Service(Path)
driver = webdriver.Chrome(service = S)
#Abrindo Marine Traffic
driver.get("http://www.marinetraffic.com")
time.sleep(5)
driver.maximize_window()
driver.find_element(By.XPATH,"(//input[@id='searchMT'])[1]").send_keys("vessel", Keys.ENTER)#

错误消息

Traceback (most recent call last):
File "...MarineTraffic.py", line 33, in <module>
driver.find_element(By.XPATH,"(//input[@id='searchMT'])").send_keys("vessel", Keys.ENTER)
File "...webdriver.py", line 1238, in find_element
return self.execute(Command.FIND_ELEMENT, {
File "...webdriver.py", line 418, in execute
self.error_handler.check_response(response)
File "...errorhandler.py", line 243, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to 
locate element: {"method":"xpath","selector":"(//input[@id='searchMT'])"}

我知道这段代码工作,因为其他网站响应良好(如谷歌等),但海洋交通。

我试过了

(By.ID, '//*[@id="searchMT"]')
(By.CSS_SELECTOR,"#searchMT")

和许多其他的

我使用execute script在搜索输入框中输入vessel

代码:

driver = webdriver.Chrome(driver_path)
driver.maximize_window()
driver.implicitly_wait(30)
wait = WebDriverWait(driver, 30)
driver.get("https://www.marinetraffic.com/")
try:
wait.until(EC.element_to_be_clickable((By.XPATH, "//button[@aria-label='AGREE']"))).click()
except:
print("AGree button did not show up")
search = wait.until(EC.visibility_of_element_located((By.ID, "searchMarineTraffic")))
driver.execute_script("arguments[0].setAttribute('value', 'Vessel')", search)

进口:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

最新更新