在搜索框中输入文本,然后使用Selenium和Python从Auto Complete中选择

2024-10-02 12:29:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用selenium和python在搜索框中输入一些文本。代码如下。如果选择“英超联赛”的话,到目前为止,它运行得非常好。虽然当输入此文本时,它会作为一个预定义的选项出现在框中,但我无法根据需要选择和单击它…如果您正在浏览网页,您可以单击“英超联赛”选项并加载新页面。我似乎无法复制这个

import time
from selenium import webdriver
from selenium.common.exceptions import NoSuchAttributeException
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select

browser = webdriver.Firefox()
browser.get("http://www.bbc.co.uk/sport/football/scores-fixtures")


try:
    elem = browser.find_element_by_class_name('sp-c-date-picker-timeline__item')
except:
    print('Was not able to find an element with that name.')

time.sleep(5)
elem.click()


try:
    elem2=browser.find_element_by_class_name('sp-c-search__input')
except:
    print('Not able to find an element with that name')

time.sleep(3)

elem2.send_keys('premier league')
time.sleep(2)

#searching for the text works but i can't select it

#elem2.send_keys(Keys.DOWN)
#time.sleep(2)
#elem2.send_keys(Keys.DOWN)
#time.sleep(2)
#elem2.send_keys(Keys.RETURN)
#elem2.submit()

elem2.select_by_visible_text('Premier League')

Tags: namefromimportbrowsersendbytimeselenium
1条回答
网友
1楼 · 发布于 2024-10-02 12:29:51

正如您试图识别Search Box到{}的标识,如下所示:

elem = browser.find_element_by_class_name('sp-c-date-picker-timeline__item')
#and
elem2=browser.find_element_by_class_name('sp-c-search__input')

这些定位器不能唯一地标识Search Box。在

input some text in a search box,您必须通过唯一的CSS或{}来标识占位符设置为Enter a team or competition的{},如下所示:

^{pr2}$

最后,对于文本为Premier League的选项,可以使用以下代码块:

suggestions = WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located(By.XPATH,"//input[@id='sp-c-search__input']//following::div[@id='search-results']//ul/li/a/mark"))
for suggestion in suggestions :
    if suggestion.get_attribute("innerHTML").contains("Premier League") :
        suggestion.click()

更新

您将错误视为:

NameError: name 'By' is not defined

请确保已添加以下所有导入:

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

相关问题 更多 >

    热门问题