如何使用Selenium和Python提取下拉菜单所选选项的文本
我试图选择屏幕截图中圈出的菜单选项的文本。在这种情况下,它是“老化硬化” 我能得到的最好结果是如何使用Selenium和Python提取下拉菜单所选选项的文本,python,selenium,select,xpath,drop-down-menu,Python,Selenium,Select,Xpath,Drop Down Menu,我试图选择屏幕截图中圈出的菜单选项的文本。在这种情况下,它是“老化硬化” 我能得到的最好结果是17043的选定值,而不是文本“老化硬化” 以下是我尝试过的: driver.find_element_by_xpath("//select[@id='lstOperation_Key']").get_attribute('text_content') 返回None driver.find_element_by_xpath("//select[@id='lstOperation_Key']").get
17043
的选定值,而不是文本“老化硬化”
以下是我尝试过的:
driver.find_element_by_xpath("//select[@id='lstOperation_Key']").get_attribute('text_content')
返回None
driver.find_element_by_xpath("//select[@id='lstOperation_Key']").get_attribute('value')
driver.find_element_by_xpath("//select[@id='lstOperation_Key']").get_attribute('selected value')
my_furnace_parameters_data['Furnace_Operation'] = driver.find_element_by_xpath("//select[@id='lstOperation_Key']//option[1]").get_attribute('text')
返回17043
driver.find_element_by_xpath("//select[@id='lstOperation_Key']").get_attribute('text')
返回None
driver.find_element_by_xpath("//select[@id='lstOperation_Key']").get_attribute('value')
driver.find_element_by_xpath("//select[@id='lstOperation_Key']").get_attribute('selected value')
my_furnace_parameters_data['Furnace_Operation'] = driver.find_element_by_xpath("//select[@id='lstOperation_Key']//option[1]").get_attribute('text')
返回None
driver.find_element_by_xpath("//select[@id='lstOperation_Key']").get_attribute('value')
driver.find_element_by_xpath("//select[@id='lstOperation_Key']").get_attribute('selected value')
my_furnace_parameters_data['Furnace_Operation'] = driver.find_element_by_xpath("//select[@id='lstOperation_Key']//option[1]").get_attribute('text')
返回'Age Harden',但是,当我在一个不是列表中第一个的操作(如'Zoo Treatment'上)上测试它时,它失败了-它仍然返回'Age Harden'
非常感谢您的帮助和指点,谢谢!
使用选择类别:
from selenium.webdriver.support.select import Select
operation_key = Select(driver.find_element_by_id('lstOperation_Key'))
operation_key.select_by_visible_text('Age Harden')
# operation_key.select_by_value('17043')
# operation_key.select_by_index(1)
您可以使用WebDriverWait
等待元素可访问:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 10)
operation_key = Select(wait.until(EC.element_to_be_clickable((By.ID, 'lstOperation_Key'))))
operation_key.select_by_visible_text('Age Harden')
# operation_key.select_by_value('17043')
# operation_key.select_by_index(1)
使用选择类:
from selenium.webdriver.support.select import Select
operation_key = Select(driver.find_element_by_id('lstOperation_Key'))
operation_key.select_by_visible_text('Age Harden')
# operation_key.select_by_value('17043')
# operation_key.select_by_index(1)
您可以使用WebDriverWait
等待元素可访问:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 10)
operation_key = Select(wait.until(EC.element_to_be_clickable((By.ID, 'lstOperation_Key'))))
operation_key.select_by_visible_text('Age Harden')
# operation_key.select_by_value('17043')
# operation_key.select_by_index(1)
第一个\u选择的\u选项
返回此选择标记中的第一个选定选项(或正常选择中的当前选定选项)
看起来你很接近。要提取默认选中的文本内容
,可以使用first\u selected\u option
属性来标识元素,并且可以根据以下解决方案提取选项文本:
- 代码块:
select = Select(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//select[@id='lstOperation_Key' and @name='lstOperation_Key']")))) //selecting tag
element = select.first_selected_option
print(element.text)
# or
print(element.get_attribute("innerHTML"))
选择的第一个选项
返回此选择标记中的第一个选定选项(或正常选择中的当前选定选项)
看起来你很接近。要提取默认选中的文本内容
,可以使用first\u selected\u option
属性来标识元素,并且可以根据以下解决方案提取选项文本:
- 代码块:
select = Select(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//select[@id='lstOperation_Key' and @name='lstOperation_Key']")))) //selecting tag
element = select.first_selected_option
print(element.text)
# or
print(element.get_attribute("innerHTML"))
当我使用这些工具时,我会不断返回WebDriverObject,例如:
。我试图添加.get\u attribute('value')
来获取文本,但它抛出了一个错误:AttributeError:'Select'对象没有属性'get\u attribute'
-知道如何获取值而不是对象吗?下面是我试图分配给字典中一个键的代码行:选择(WebDriverWait(driver,20)。直到(EC.element可点击((By.ID,'lstOperation'u Key')))。获取属性('value')
是否尝试选择或获取所选文本?没有。获取属性('value'))在我的代码中,它将返回None,因为Select
类没有get\u属性
method当我使用这些方法时,我会不断返回WebDriverObject,例如:
。我试图添加。get\u属性('value'))
获取文本,但它抛出了一个错误:AttributeError:“Select”对象没有属性“get\u attribute”
-知道如何获取值而不是对象吗?下面是我试图分配给字典中键的代码行:选择(WebDriverWait(driver,20)。直到(EC.element\u可点击((By.ID,'lstOperation\u key'))))).get_属性('value')
是否尝试选择或获取所选文本?我的代码中没有.get_属性('value'),它将返回无,因为select
类没有get_属性
方法