这是我的代码:
import threading
import Queue
import socket
import pickle
import base64
import time
def enter_mashov():
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# Create a new instance of the Firefox driver
start = time.time()
driver = webdriver.Firefox()
driver.get('https://safe.mashov.info/students/login.aspx')
# find the elements
IDChanger = driver.find_element_by_id('TextBoxId')
PassChanger = driver.find_element_by_id('TextBoxPass')
IDChanger.send_keys('someid')
PassChanger.send_keys('somepass')
enter_mashov()
我想和ID Changer以及密码更换器一样,但问题是,它是一个下拉列表,它的选项不是ID或名称,而是值。 那么如何更改对象的值呢? 比方说,改变它的值,然后从下拉列表的选项中选择一个选项?
答案 0 :(得分:0)
如果您想与<select>
元素进行互动,请使用Select()
类。
select = Select(driver.find_element_by_id("select_id"))
select.select_by_visible_text("The thing you want to select")
答案 1 :(得分:0)
您可以按标记名称iterate through the elements并选择一种方式,或者您可以使用xpath,这不需要元素具有ID:
select = driver.find_element_by_tag_name("select")
allOptions = select.find_elements_by_tag_name("option")
for option in allOptions:
print "Value is: " + option.get_attribute("value")
option.click()
关于how to do it in Java的问题非常相似。
Python中的from selenium.webdriver.common.by import By
inputs = driver.find_elements(By.XPATH, "//input")
答案 2 :(得分:0)
下拉列表很可能是select
元素。
select
元素内部将是一组option
元素。
<select...>
<option value="valueForFirstOption"...>Visible text for first option</option>
<option value="valueForSecondOption"...>Visible text for second option</option>
</select>
使用浏览器中的网络开发者工具查看下拉列表的html代码,并检查是否属实。
要设置其值,只需执行用户操作:
select
元素option
元素。有多种方法可以找到option元素。
如果要通过可见文本识别它,请使用@MarkRowlands答案。
如果要按其值找到它,可以使用css选择器,例如option[value='valueToPick']
。