硒中的'Select(driver.find_element_by_id('id_of_element'))中的id_by_element是什么

时间:2019-07-20 10:54:08

标签: python selenium selenium-webdriver

我想在this页上使用硒,在显示“按植物性食物搜索”的框中键入“ 22663”,然后单击“食物-疾病关联”;然后单击页面底部的提交(然后,作为大图,单击下一页上的“植物-疾病关联”,然后导出植物-疾病表)。

我正在遵循these的说明,并编写了以下代码:

import sys
import pandas as pd
from bs4 import BeautifulSoup
import selenium
from selenium import webdriver
from selenium.webdriver.support.ui import Select
import csv
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary


url = 'http://147.8.185.62/services/NutriChem-2.0/'
driver = webdriver.Firefox(executable_path='/Users/kela/Desktop/scripts/scraping/geckodriver')
driver.get(url)

element = driver.find_element_by_id("input_food_name")
element.send_keys("22663")

#click food-disease association
element = driver.find_element_by_xpath("//select[@name='food_search_section']")
all_options = element.find_elements_by_tag_name("option")

接下来的两行是我遇到的问题:

element = Select(driver.find_element_by_id('food_input'))
element.select_by_value('food_disease')

我遇到了错误:

selenium.common.exceptions.UnexpectedTagNameException: Message: Select only works on <select> elements, not on <td>

我的问题是,在this页上,我不了解在我的情况下“ id_of_element”是指什么(以便能够在“按植物搜索-基础食品”部分);因此,例如,在下面的代码行中,我将X替换为什么,然后单击提交,然后转到下一页:

element = Select(driver.find_element_by_id('X'))
element.select_by_value('X')

1 个答案:

答案 0 :(得分:3)

单独使用#food_input会给您一个表格单元格<td>,您需要选择其下的<select>元素

更改

element = Select(driver.find_element_by_id('food_input'))

进入

element = Select(driver.find_element_by_css_selector('#food_input select'))

或者只是

element = Select(driver.find_element_by_css_selector('[name=food_search_section]'))

<select>元素为目标。