首页 > 解决方案 > 如何遍历表并打开满足条件的选项卡

问题描述

我需要遍历一个表来获取“GST Invoice No.”的值。并仅打开第三位为数字 2 的发票编号的“查看发票”表。

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

driver = webdriver.Chrome(executable_path=r'D:/Chrome driver/chromedriver.exe') # Get local session(use webdriver.Chrome() for chrome) 

driver.get("URL")



WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//input[@id='PNRId']"))).send_keys("SHFYGW")
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='GstRetrievePageInteraction']"))).click()


#print(toJourney.find_element_by_xpath('/tbody/tr/td[2]/ul'))

如何继续迭代表?我尝试了以下但它只给出了一个值

uls = driver.find_elements(By.CLASS_NAME, "gst-invoice-list.list-inline")

我如何迭代以仅在第三位打开具有数字 2 的那个?

标签: pythonhtmlseleniumselenium-webdriver

解决方案


没有正则表达式,目前只是通过 xpath 找到。

driver.implicitly_wait(5)
uls = driver.find_elements_by_xpath("//ul[@class='gst-invoice-list list-inline']//li")
for url in uls:
    if url.text[2]=='2': #^..2 would be a simple regex for digit 2 on 3rd index
         print (url.text)

显示以下

MH2192004AA58892
MP2192004AA05359

推荐阅读