首页 > 解决方案 > Selenium Python:不知道如何将当前时间 +1hr 映射到下拉列表中的选项(xpath,值)

问题描述

我正在尝试自动化一个有几个小时的下拉菜单,我的目标总是选择当前时间前一小时。

from selenium import webdriver
from selenium.webdriver.remote.webdriver import WebDriver
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from LoginPage import executor_url,session_id
from datetime import date
from datetime import datetime,timedelta

def attach_to_session(executor_url, session_id):
    original_execute = WebDriver.execute
    def new_command_execute(self, command, params=None):
        if command == "newSession":
            # Mock the response
            return {'success': 0, 'value': None, 'sessionId': session_id}
        else:
            return original_execute(self, command, params)
    # Patch the function before creating the driver object
    WebDriver.execute = new_command_execute
    driver = webdriver.Remote(command_executor=executor_url, desired_capabilities={})
    driver.session_id = session_id
    # Replace the patched function with original function
    WebDriver.execute = original_execute
    return driver

bro = attach_to_session(executor_url, session_id)
bro.get('https://heregoesmywebportaladdress')
today=date.today()
now=datetime.now()+ timedelta(hours=1)
print(date.strftime(now,'%H'))
bro.find_element_by_id("snapshot_scheduler_form_startDate").send_keys(date.strftime(today, '%Y-%m-%d'))
time.sleep(2)
bro.find_element_by_id("snapshot_scheduler_form_startTime_hour").click()

这是我不知道该怎么做的地方。

bro.find_element_by_xpath("/html/body/div[2]/div/div[2]/div[2]/div/div[2]/div/div/div/div[1]/div/div/div/div/div[2]/form/fieldset[1]/div/select[1]/option[13]").click()
time.sleep(2)

这些是选项

<select id="snapshot_scheduler_form_startTime_hour" name="snapshot_scheduler_form[startTime][hour]" class="form-control">
<option value="0">00</option>
<option value="1">01</option>
<option value="2">02</option>
<option value="3">03</option>
<option value="4">04</option>
<option value="5">05</option>
<option value="6">06</option>
<option value="7">07</option>
<option value="8">08</option>
<option value="9">09</option>
<option value="10">10</option> ETCD

标签: pythonselenium

解决方案


下拉列表是一个选择元素。您可以为此使用 Selenium Select是另一个示例:

from selenium.webdriver.support.select import Select

# select by value
Select(driver.find_element_by_id("myid")).select_by_value(hour)

# or select by text
Select(driver.find_element_by_id("myid")).select_by_visible_text()

推荐阅读