Python 如何遍历表并打开满足条件的选项卡

Python 如何遍历表并打开满足条件的选项卡,python,html,selenium,selenium-webdriver,Python,Html,Selenium,Selenium Webdriver,我需要遍历一个表来获取“GST发票号”的值,并打开“查看发票”表,该表只包含第三位为数字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 dr

我需要遍历一个表来获取“GST发票号”的值,并打开“查看发票”表,该表只包含第三位为数字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的一个?

而不使用正则表达式当前仅通过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

该表包含GST发票号。加载“GST发票号”需要一些时间。在读取要比较的数据之前应用一些等待。选中下面的代码,提取发票编号并比较第三位数字,然后单击“查看发票”链接以查看发票

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()

driver.get("URL")

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

WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CLASS_NAME, "gst-invoice-list.list-inline")))

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

for ele in elements:
    eleText = ele.find_element_by_tag_name("li").text
    if eleText[2]=='2':
        print(eleText)
        #ele.find_element(By.ID, 'ViewInvoice').click()
        driver.execute_script("arguments[0].click()", ele.find_element(By.ID, 'ViewInvoice'));
        #break

driver.quit()

嗨,怎么了?嗨,对于不同的PNR,发票是分散的,没有按特定顺序排列。我想打开那些GST发票第3位有数字2的发票。如何循环并获取这些发票?您可以使用带ul[class='gst-invoice-list inline']/li的xpath,而不是要匹配的regex/text()=''。这会检查所有gst编号吗?您需要使用/text()=''然后在第三个位置检查数字2。要只打开这两张发票,我现在应该使用url来代替驱动程序,对吗?你几乎可以查看dilips的答案并找出他做了什么。除了使用break.Hi Dilip之外,上面的代码给出了
element单击拦截异常:element单击拦截:
我尝试了
ele.find_元素(By.XPATH,'li[2]/a[1]')。click()
仍然得到了相同的结果error@ShwetaSave-此代码搜索第一个事件并单击ViewInvoice,它将在新选项卡中打开,执行将从for循环中出来。如果要查看所有发生情况的发票,则需要使用getWindowHandles来实现相同的效果<代码>元素ClickInterception例外:元素click Interceptive:您必须获得错误,因为当您检查其他
查看发票
按钮时,该页面上的图像将获得单击,该按钮正与该页脚图像重叠。它不会第一次打开。您删除了该
中断
声明?是的,但我确实加了。