需要单击与给定文本匹配的下载按钮
Need to click download button that matches the given text
我正在尝试下载在 table 中写入税务发票的发票,为此我遍历 table 元素并获取所需的详细信息。但是当我点击下载按钮时,它会下载同一张发票两次。如何让它下载第二张“税务发票”?下图为:
和html代码:
下面是代码:
import time
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')
driver.get("the link")
time.sleep(10)
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="GST"]/div/div/a[2]/span[1]'))).click()
driver.switch_to.frame('ifgstdownloadnFrame')
driver.find_element_by_xpath('//*[@id="txtpnr"]').send_keys('QYJ27J')
driver.find_element_by_xpath('//*[@id="btnSubmit"]').click()
mytable = driver.find_element_by_css_selector("table.gstInvoiceGrid")
for row in mytable.find_elements_by_css_selector('tr'):
for cell in row.find_elements_by_tag_name('td'):
if 'Tax Invoice' in cell.text:
print()
driver.find_element_by_css_selector('input.download.downloadbutton').click()
time.sleep(10)
#driver.quit()
您需要更改逻辑以使用 dot
查找 intermediate
单元格,使用以下任一代码逻辑将单击具有 Tax Invoice
.[=15= 的每个下载按钮]
for row in mytable.find_elements_by_css_selector('tr'):
for cell in row.find_elements_by_xpath('./td'):
if 'Tax Invoice' in cell.text:
print()
row.find_element_by_xpath(".//input[@value='Download']").click()
或者
for row in mytable.find_elements_by_css_selector('tr'):
if row.find_element_by_xpath("./td[text()='Tax Invoice']"):
row.find_element_by_xpath(".//input[@value='Download']").click()
我正在尝试下载在 table 中写入税务发票的发票,为此我遍历 table 元素并获取所需的详细信息。但是当我点击下载按钮时,它会下载同一张发票两次。如何让它下载第二张“税务发票”?下图为:
和html代码:
下面是代码:
import time
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')
driver.get("the link")
time.sleep(10)
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="GST"]/div/div/a[2]/span[1]'))).click()
driver.switch_to.frame('ifgstdownloadnFrame')
driver.find_element_by_xpath('//*[@id="txtpnr"]').send_keys('QYJ27J')
driver.find_element_by_xpath('//*[@id="btnSubmit"]').click()
mytable = driver.find_element_by_css_selector("table.gstInvoiceGrid")
for row in mytable.find_elements_by_css_selector('tr'):
for cell in row.find_elements_by_tag_name('td'):
if 'Tax Invoice' in cell.text:
print()
driver.find_element_by_css_selector('input.download.downloadbutton').click()
time.sleep(10)
#driver.quit()
您需要更改逻辑以使用 dot
查找 intermediate
单元格,使用以下任一代码逻辑将单击具有 Tax Invoice
.[=15= 的每个下载按钮]
for row in mytable.find_elements_by_css_selector('tr'):
for cell in row.find_elements_by_xpath('./td'):
if 'Tax Invoice' in cell.text:
print()
row.find_element_by_xpath(".//input[@value='Download']").click()
或者
for row in mytable.find_elements_by_css_selector('tr'):
if row.find_element_by_xpath("./td[text()='Tax Invoice']"):
row.find_element_by_xpath(".//input[@value='Download']").click()