使用Selenium和Python从搜索结果列表中进行选择

使用Selenium和Python从搜索结果列表中进行选择,python,selenium,xpath,css-selectors,webdriverwait,Python,Selenium,Xpath,Css Selectors,Webdriverwait,我知道也有类似的问题,但我无法利用这些解决方案。这就是为什么我要问我的具体问题 我的代码如下所示: driver.get("https://") driver.maximize_window() login = driver.find_element_by_xpath(email_xpath).send_keys(email) login = driver.find_element_by_xpath(pwd_xpath).send_keys(pwd)

我知道也有类似的问题,但我无法利用这些解决方案。这就是为什么我要问我的具体问题

我的代码如下所示:

 driver.get("https://")
    driver.maximize_window()
    login = driver.find_element_by_xpath(email_xpath).send_keys(email)
    login = driver.find_element_by_xpath(pwd_xpath).send_keys(pwd)
    login = driver.find_element_by_xpath(continue_xpath)
    login.click()
    time.sleep(10)
    
    ticker = 'DB:0NU'
    search = WebDriverWait(driver, 15).until(EC.element_to_be_clickable((By.XPATH, search_xpath))).send_keys(ticker)
    
    time.sleep(10)
    
    print(search)
    
    elements = driver.find_elements_by_xpath("//*[@id='popup-portal']/div/div/div/div/ul")
    for element in elements:
        print(element.text)
        try:
            if element.text == ticker:
                element.click()
        except:
            pass
我没有得到任何错误结果,但无论如何,解决方案并不令人满意,因为我的代码没有从搜索结果中选择“DB:0NU”,即使可以在搜索结果中看到它。如何使代码单击元素

html源代码示例:

<ul data-cy-id="search-results-list" class="sc-gCwZxT kelPjw"><li>

有谁能帮忙吗?

您在页面上的定位器(获取搜索结果的定位器)方面遇到了一些问题

除此之外,在
for
循环中,当找到所需的值时,您需要
中断
,因为您不想在找到该值后继续搜索其他结果

    driver.get("https://simplywall.st/dashboard")
    driver.maximize_window()
    wait = WebDriverWait(driver, 10)
    wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, '[name="username"]'))).send_keys(email)
    driver.find_element_by_css_selector('[name="password"]').send_keys(password)
    driver.find_element_by_css_selector('[data-cy-id="button-submit-login"]').click()

    ticker = 'DB:0NU'
    search = WebDriverWait(driver, 15).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '[name="search-search-field"]'))).send_keys(ticker)

    elements = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, '[data-cy-id="search-results-list"] p')))

    for element in elements:
        print(element.text)
        try:
            if element.text == ticker:
                element.click()
                company = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '[data-cy-id="company-header-title"]'))).text
                print(company)
                break
        except:
            pass

感谢您的支持,不幸的是,单击该元素并切换到下一页仍然不起作用。@Numpy现在修复了它
print(company)
正在从重定向页面打印Nutanix谢谢,但我收到以下错误:文件“D:\…elements=WebDriverWait.until(EC.presence\u所有元素的位置((By.CSS\u SELECTOR,[data cy id=“search results list”]p'))类型错误:until()缺少1个必需的位置参数:“method”元素。很遗憾,单击不会重定向到下一页。这是因为您没有使用
wait
变量,但
WebDriverWait
是一个类,需要实例化,正如我在上面使用
wait=WebDriverWait(driver,10)