Selenium的新手。我正在尝试获取它,以便可以在搜索框中输入名称,然后单击正确的名称。
我设法编写了一些代码去网站,然后输入我想要的内容,然后按搜索按钮。问题在于它随后显示了项目列表,因此我必须再次单击。
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from webdriver_manager.chrome import ChromeDriverManager
from time import sleep
index = 'AMZN'
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get('https://www.marketscreener.com')
sleep(6)
text_box = driver.find_element_by_css_selector('#autocomplete')
text_box.send_keys(index)
#select.select_by_index(1)
driver.find_element_by_xpath("//*[@id='recherche_menu']/table/tbody/tr[1]/td/button/img").click()
当我输入名称并且不单击时,它会显示一个下拉列表,因此我尝试从下拉列表中选择第一项,因为这通常是我想要的。
我尝试通过使用注释掉的select.select_by_index代码行来进行此操作。但这并不完全有效。
我也尝试使用text_box.send_keys(Keys.DOWN, Keys.RETURN)
向下移至下拉字段,但这不起作用,返回的值与我当前从单击中得到的值相同。
任何帮助表示赞赏。
谢谢
答案 0 :(得分:3)
此页面使用许多JavaScript
来监听鼠标和按键的动作。如果您不关注搜索框,则下拉菜单将消失。(并且您无法在源代码中找到它。代码)。
尝试使用ActionChains
,这在我的PC上可以正常工作:
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.action_chains import ActionChains
from time import sleep
index = 'AMZN'
driver = webdriver.Chrome()
driver.get('https://www.marketscreener.com')
action = ActionChains(driver)
sleep(4)
text_box = driver.find_element_by_css_selector('#autocomplete')
action.move_to_element(text_box)
action.click(text_box)
action.send_keys(index)
action.perform()
sleep(1)
driver.find_element_by_xpath('//*[@id="AC_tRes"]/li[1]').click()
如果无法显示结果,则可能需要增加sleep()
的时间。