使用 Selenium 和 Python 从搜索结果列表中选择
Selecting from search result list with Selenium and Python
我知道有类似的问题,但我无法使用这些解决方案。这就是为什么我要问我的具体问题。
我的代码如下:
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
我没有得到任何错误结果,但尽管如此,解决方案并不令人满意,因为我的代码没有 select 'DB:0NU' 来自搜索结果,即使可以看到它在搜索结果中。如何让我的代码点击元素?
html 源代码示例:
<ul data-cy-id="search-results-list" class="sc-gCwZxT kelPjw"><li>
谁能帮忙?
页面上的定位器(获取搜索结果的定位器)存在一些问题。
除此之外,在 for
循环中,您需要 break
找到所需的值,因为您不想在找到后继续搜索其他结果。
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
我知道有类似的问题,但我无法使用这些解决方案。这就是为什么我要问我的具体问题。
我的代码如下:
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
我没有得到任何错误结果,但尽管如此,解决方案并不令人满意,因为我的代码没有 select 'DB:0NU' 来自搜索结果,即使可以看到它在搜索结果中。如何让我的代码点击元素?
html 源代码示例:
<ul data-cy-id="search-results-list" class="sc-gCwZxT kelPjw"><li>
谁能帮忙?
页面上的定位器(获取搜索结果的定位器)存在一些问题。
除此之外,在 for
循环中,您需要 break
找到所需的值,因为您不想在找到后继续搜索其他结果。
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