从下拉菜单中选择硒

时间:2020-05-23 14:23:22

标签: python selenium selenium-webdriver

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)向下移至下拉字段,但这不起作用,返回的值与我当前从单击中得到的值相同。

要清楚我的意思是当前代码将返回以下内容: Current return

但是我希望它直接进入亚马逊页面,因此它将返回以下内容: Want to go to this page

任何帮助表示赞赏。

谢谢

1 个答案:

答案 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()的时间。