【问题标题】:python selenium selection option from dropdown下拉列表中的python selenium选择选项
【发布时间】:2021-05-24 22:29:12
【问题描述】:

我需要帮助才能使用 python 和 selenium 从以下下拉列表中选择“过去 7 天”选项:

这里是部分下拉列表的 html:

<div class="date-range" id="yui_3_18_1_1_1614002255126_175" style="margin-right: 25px;">
    <div class="option-select global default" id="yui_3_18_1_1_1614002255126_174">
        <div class="select-open" id="yui_3_18_1_1_1614002255126_173">
            <div class="select-title" id="yui_3_18_1_1_1614002255126_172">
                <span class="option-title">DATE RANGE:</span>
                <span class="option-selection" id="yui_3_18_1_1_1614002255126_170">Last 30 days</span>
            </div>
            <div class="dropdown-arrow"></div>
        </div>
        <div class="select-body" id="yui_3_18_1_1_1614002255126_190">
            <div class="option">
                Today
                <span class="extra-info-wrapper">
                    <span>&nbsp;(</span>
                    <span class="extra-info">22 Feb</span>
                    <span>)</span>
                </span></div>
            <div class="option">
                Yesterday
                <span class="extra-info-wrapper">
                    <span>&nbsp;(</span>
                    <span class="extra-info">21 Feb</span>
                    <span>)</span>
                </span></div>
            <div class="option">
                This week
                <span class="extra-info-wrapper">
                    <span>&nbsp;(</span>
                    <span class="extra-info">Monday - Today</span>
                    <span>)</span>
                </span></div>
            <div class="option" id="yui_3_18_1_1_1614002255126_189">
                Last 7 days
                <span class="extra-info-wrapper">
                    <span>&nbsp;(</span>
                    <span class="extra-info">16 Feb - Today</span>
                    <span>)</span>
                </span></div>
            <div class="option">
                This month
                <span class="extra-info-wrapper">
                    <span>&nbsp;(</span>
                    <span class="extra-info">1 Feb - Today</span>
                    <span>)</span>
                </span></div>

到目前为止我的代码是:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

PATH = "C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(PATH)
myUsername="Xxx”
myPassword="Xxx”
driver.get("https://uk.ixl.com/signin/sop")


driver.find_element_by_xpath('//*[@id="siusername"]').send_keys(myUsername)
driver.find_element_by_xpath('//*[@id="sipassword"]').send_keys(myPassword)
driver.find_element_by_xpath('//*[@id="custom-signin-button"]').click()
time.sleep(1)

#select report
driver.get("https://uk.ixl.com/analytics/students-quickview?teacherId=125756982")
time.sleep(5)           

wait = WebDriverWait(driver, 10)

wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'date-range'))).click()
driver.find_element_by_id('yui_3_18_1_1_1614002255126_189').click()

我收到错误:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate 
element: {"method":"css selector","selector":"[id="yui_3_18_1_1_1614002255126_189"]"}

这只是我的第二个 python 项目,所以请原谅任何缺乏理解,这只是一种爱好,但我已经被困了 2 天,尝试了各种但没有任何效果,任何帮助将不胜感激(甚至链接到视频将有助于解决这个问题,以便我可以学习),谢谢

【问题讨论】:

    标签: python-3.x selenium selenium-webdriver xpath webdriverwait


    【解决方案1】:

    您可以像这样在 xpath 中硬编码文本:

    wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'date-range'))).click()
    wait.until(EC.element_to_be_clickable((By.XPATH, '//div[text()="Last 7 days"]'))).click()
    

    如果您需要其他选项,请更改文本。

    【讨论】:

      【解决方案2】:

      我通常做的是:

      driver.find_element_by_xpath(f'//select[@name="nameOfYourButton"]/option[text()=""TextToBeSelected"]').click()
      

      其中nameOfYourButtonTextToBeSelected 必须替换为您的特定变量

      特别是,我可以看到 TextToBeSelected 应该是 Last 7 days 而从您显示的 HTML sn-p 我看不到按钮的名称。

      【讨论】:

        【解决方案3】:

        使用 WebDriverWait() 并关注xpath 以点击Last 7 days

        WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='select-body']//div[@class='option' and contains(.,'Last 7 days')]"))).click() 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-03-13
          • 1970-01-01
          • 2022-07-21
          • 2018-02-17
          • 2021-04-18
          • 1970-01-01
          相关资源
          最近更新 更多