簡體   English   中英

Selenium和Python中帶有下拉菜單的輸入框

[英]Input box with drop down menu in Selenium and Python

我正在嘗試使用Selenium,python和firefox在網站上的輸入框中輸入數據,然后從文本框中的下拉菜單中進行選擇,但一直無法這樣做。 以前它只是一個文本框,但網站已更改。

該網站位於http://ecos.fws.gov/ecp/

輸入的文本框ID為“ searchTerm”。 該站點允許輸入科學名稱(或科學名稱的一部分),然后從選項中進行選擇。 例如,如果您在文本框中輸入“ Acipenser brevirostrum”,它將為您提供一個單擊選項。

不幸的是,不確定如何編寫代碼。 任何幫助,將不勝感激。 到目前為止,我有這個。

import selenium 
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
from selenium.webdriver.support.ui import Select

binary = FirefoxBinary(r'C:/Program Files (x86)/Mozilla Firefox/firefox.exe')
driver = webdriver.Firefox(firefox_binary=binary)
driver.get("http://ecos.fws.gov/ecp")

SciName = driver.find_element_by_id('searchTerm')
SciName.send_keys(names)
SciName.send_keys(Keys.RETURN)

最后三行曾經可以使用,但是現在它既是帶有下拉菜單的輸入框,還是失敗了。

任何幫助,將不勝感激。

在搜索框中輸入名稱(id-searchTerm)后,請等待明確的時間檢查div(類-autocomplete-suggestions)的可見性。 這包含該網站引發的建議。 然后,您必須找到適合您的選項。 嘗試使用此xpath並單擊元素。 您應該使用findelements選項,因為您的文本可能不匹配任何內容,並且會出現錯誤。

"//div[@class='autocomplete-suggestion'][contains(.,'Acipenser brevirostrum')]"

如果您在鍵入搜索文本時遇到無法自動完成下拉列表的問題,請一次發送一個字符,並且間隔較短,以觸發呼叫。

您可以簡單地使用driver.find_element_by_name ,因為html是:

<input type="text" class="form-control" name="query" placeholder="Search ECOS">

該代碼將起作用:

from selenium import webdriver

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("http://ecos.fws.gov/ecp/")

driver.find_element_by_name("query").click()
driver.find_element_by_name("query").send_keys("test")
driver.find_element_by_css_selector("button.btn.btn-default").click()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM