我有以下的下拉列表,我想选择 "上一年 "的值。
(我已经手动选择了该值)
问题有两个,我很难用我的代码 "找到 "或定位这个下拉列表,而且 "id "中的数字会在不同的页面上变化,所以我不能只通过它的 "id "来定位它。我正在尝试使用下面的Python 3代码。
select = driver.find_elements_by_xpath('//*[contains(@id, "dropdown-intervaltype")]')
select.click()
# then click the "Previous Year" text
我也试过了
select = Select(driver.find_elements_by_xpath('//*[contains(@id, "dropdown-intervaltype")]'))
select.select_by_value("Previous Year")
现在这个网站是一个工作的私人网站,所以我不能授予访问权,但我希望有人能指出,我还可以尝试用什么方法来定位这个元素,并选择合适的下拉值?我试过用 "css "和 "xpath "来定位这个字段,没有成功。
xpath = //*[@id="dropdown-intervaltype31442"]
css_selector = #dropdown-intervaltype31442
full_xpath = /html/body/div[4]/div[2]/div/div[3]/div[3]/div/div[2]/div/form/table/tbody/tr/td[2]/div/div[1]/select
任何测试的想法都会有帮助。谢谢!我有下面的下拉列表,它可以选择正确的下拉值。
在这里,我想说的是,我很难 "找到 "或... <select>
元素是一个动态元素。所以要选择 <option>
附文 前一年 使用 硒 你需要诱导 WebDriverWait 对于 element_to_be_clickable()
您可以使用以下任何一种方式 定位策略:
使用 CSS_SELECTOR
:
select = Select(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "select[id^='dropdown-intervaltype'][name^='deviceServicesModel']"))))
select.select_by_visible_text('Previous Year')
使用 XPATH
:
select = Select(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//select[starts-with(@id, 'dropdown-intervaltype')][starts-with(@name,'deviceServicesModel')]"))))
select.select_by_visible_text('Previous Year')
说明: : 你必须添加以下导入。
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select
你可以在以下几个相关讨论中找到。
您可以使用XPath.NET Framework 2.0或2.0版本来实现。
new Select (driver.findElement(By.xpath("/select[arts-with(@id, 'dropdown-intervaltype')][arts-with(@name,'deviceServicesModel')]")).selectByVisibleText("Privious Year")。
你也可以使用id.newSelect(driver.findElement()).selectByVisibleText("Privious Year");。
new Select(driver.findElement(By.id("dropdownintervaltype"))).selectByVisibleText("阿根廷")。
你检查你的xpath,并采取正确的xpath。希望这个答案对你有用。