如何使用WebDriverWait()访问Selenium Python中具有相同类名称的下一个元素的值

谢赫·阿布扎尔

我正在尝试访问两个字段的值Year以及Quarter从此特定站点访问的值在StackOverflow的一名成员的帮助下year,现在,如果我想访问该quarter部件,那么我便能够实现该部件的代码,那么我该如何访问该部件。

下面是到目前为止的实现。

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-error')
options.add_argument('--ignore-ssl-errors')

url = "https://lifeinsurance.adityabirlacapital.com/about-us/public-disclosure"
driver = webdriver.Chrome(executable_path='drivers/chromedriver.exe')

driver.get(url)

WebDriverWait(driver, 20).until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, "div.selectize-input.items.full.has-options.has-items"))
).click()

year_dropdown = WebDriverWait(driver, 20).until(
    EC.visibility_of_all_elements_located(
        (By.CSS_SELECTOR, "div.selectize-dropdown-content div.option")
    )
)

for year in year_dropdown:
    print(year.text)

欢迎任何提示和建议。

服务

您的年份和季度都有相同的结构。一个selectPublicYear和另一个一起selectPublicQuarter上课

wait = WebDriverWait(driver, 20)

# Years
year_selector = ".selectize-control.selectPublicYear"
year_option_selector = year_selector + " .option"

wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, year_selector))).click()

wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, year_option_selector)))
years = driver.find_elements(By.CSS_SELECTOR, year_option_selector)
for year in years:
    print(year.text)
years[-1].click()

# Quarters
quarter_selector = ".selectize-control.selectPublicQuarter"
quarter_option_selector = quarter_selector + " .option"

wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, quarter_selector))).click()
# Wait for option element to be clickable.
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, quarter_option_selector)))
# Get all option elements
quarters = driver.find_elements(By.CSS_SELECTOR, quarter_option_selector)
for quarter in quarters:
    print(quarter.text)
# Select last one
quarters[-1].click()

您可以添加方法以按值选择下拉列表:

def select_dropdown(name, selector, value):
    print(f'Select "{name}" dropdown, value: "{value}"')

    # Selectors
    selector = ".selectize-control" + selector
    option_selector = selector + " .option"

    wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, selector))).click()

    # Wait for option element to be clickable
    wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, option_selector)))

    # Get all options elements
    option_elements = driver.find_elements(By.CSS_SELECTOR, option_selector)
    # Get text values from options
    options = [opt.text.strip() for opt in option_elements]
    print(f'Available values: {options}')

    # Check if options have value
    if value not in options:
        raise Exception(f'"{name}" dropdown does not have "{value}" value. Available values: {options}')

    option_elements[options.index(value)].click()

调用方式:

select_dropdown(name="Year", selector=".selectPublicYear", value="2020-2021")
select_dropdown(name="Quarter", selector=".selectPublicQuarter", value="Q2: Sep, 2020")

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何访问ArrayList中的上一个/下一个元素?

来自分类Dev

如何将具有NULL值的所有记录更新为下一个现有值

来自分类Dev

如何查找下一个较小的整数(具有相同的1s)

来自分类Dev

获取下一个具有相同类的元素,无论其在DOM中的位置如何

来自分类Dev

如何查找具有相同类的父级兄弟姐妹的下一个元素

来自分类Dev

如何从具有相同类的div中获取文本值,并在另一个div中显示?

来自分类Dev

如何从Python中的上一个值中减去下一个值?

来自分类Dev

如何使用Selenium Web驱动程序获取具有下一个div值的标签名称?

来自分类Dev

如何将列表中的元素与下一个元素进行比较,如果相同则分开?

来自分类Dev

如何使用Python访问具有相同类名的第二个元素

来自分类Dev

如何到达HTML中的下一个元素

来自分类Dev

打印具有上一个和下一个值的语句。使用PHP的SUNDAY MONDAY程序

来自分类Dev

如何从javascript或lodash中的数组中删除所有下一个元素

来自分类Dev

如何迭代Ruby中的下一个元素?

来自分类Dev

如何查找下一个较小的整数(具有相同的1s)

来自分类Dev

如何定位CSS中的下一个元素?

来自分类Dev

如何找到具有值的下一个单元格并获取日期差

来自分类Dev

如何在每次锚定点击时选择具有唯一ID的下一个元素?

来自分类Dev

如何从Python中的上一个值中减去下一个值?

来自分类Dev

如何使用Selenium Web驱动程序获取具有下一个div值的标签名称?

来自分类Dev

如何获取具有属性tabindex的下一个元素

来自分类Dev

如何在一个元素具有两个条件的情况下使用WebDriverWait(Python,Selenium)

来自分类Dev

如何使用 WebDriverWait 从另一个元素 selenium 获取元素?

来自分类Dev

如何获取具有 rowspan 的 td 并使用 jquery 将其拆分为下一个 tr 元素?

来自分类Dev

如何使用Python查找具有相同ID的下一个日期?

来自分类Dev

如何使用epPlus在excel中检查并合并下一个值是否相同的两行

来自分类Dev

如何创建具有特定行值+同一行上的下一个值的数据框?

来自分类Dev

如何使用js删除或重命名具有相同类的多元素的第一个元素?

来自分类Dev

如何使用javascript一次关闭具有相同类的一个元素

Related 相关文章

  1. 1

    如何访问ArrayList中的上一个/下一个元素?

  2. 2

    如何将具有NULL值的所有记录更新为下一个现有值

  3. 3

    如何查找下一个较小的整数(具有相同的1s)

  4. 4

    获取下一个具有相同类的元素,无论其在DOM中的位置如何

  5. 5

    如何查找具有相同类的父级兄弟姐妹的下一个元素

  6. 6

    如何从具有相同类的div中获取文本值,并在另一个div中显示?

  7. 7

    如何从Python中的上一个值中减去下一个值?

  8. 8

    如何使用Selenium Web驱动程序获取具有下一个div值的标签名称?

  9. 9

    如何将列表中的元素与下一个元素进行比较,如果相同则分开?

  10. 10

    如何使用Python访问具有相同类名的第二个元素

  11. 11

    如何到达HTML中的下一个元素

  12. 12

    打印具有上一个和下一个值的语句。使用PHP的SUNDAY MONDAY程序

  13. 13

    如何从javascript或lodash中的数组中删除所有下一个元素

  14. 14

    如何迭代Ruby中的下一个元素?

  15. 15

    如何查找下一个较小的整数(具有相同的1s)

  16. 16

    如何定位CSS中的下一个元素?

  17. 17

    如何找到具有值的下一个单元格并获取日期差

  18. 18

    如何在每次锚定点击时选择具有唯一ID的下一个元素?

  19. 19

    如何从Python中的上一个值中减去下一个值?

  20. 20

    如何使用Selenium Web驱动程序获取具有下一个div值的标签名称?

  21. 21

    如何获取具有属性tabindex的下一个元素

  22. 22

    如何在一个元素具有两个条件的情况下使用WebDriverWait(Python,Selenium)

  23. 23

    如何使用 WebDriverWait 从另一个元素 selenium 获取元素?

  24. 24

    如何获取具有 rowspan 的 td 并使用 jquery 将其拆分为下一个 tr 元素?

  25. 25

    如何使用Python查找具有相同ID的下一个日期?

  26. 26

    如何使用epPlus在excel中检查并合并下一个值是否相同的两行

  27. 27

    如何创建具有特定行值+同一行上的下一个值的数据框?

  28. 28

    如何使用js删除或重命名具有相同类的多元素的第一个元素?

  29. 29

    如何使用javascript一次关闭具有相同类的一个元素

热门标签

归档