如何在表中打印Web元素-Selenium Python



此代码将转到一个网站,启动它,提取2个web元素(电子邮件和ticket#(并成功打印。

from audioop import add
from inspect import isframe
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.firefox.service import Service
from selenium.webdriver.support import expected_conditions as EC

#Firefox Driver
driver = webdriver.Firefox(service=Service(r'C:geckodriver-v0.32.0-win-aarch64geckodriver.exe'))
#Launches Ticketing website
driver.get('WebsiteURl')
wait = WebDriverWait(driver, 10)
#Switches to iFrame
iframe = driver.find_element(By.XPATH,'//*[@id="gsft_main"]')
driver.switch_to.frame(iframe)
#Calls for value in row (Email and Ticket #)
Email = driver.find_element(By.XPATH,"//table/tbody/tr[1]/td[8]")
Ticket = driver.find_element(By.XPATH,"//table/tbody/tr[1]/td[3]")
print(Ticket.text + " : " + Email.text)

这是输出:

TicketNumber001:useremail@domain.com

输出按预期工作,但现在我希望利用接下来的10个连续XPaths为以下列执行此操作:

tr[1]/td[3]



tr[10]/td[3]

它应该是这样的,我应该能够将其导出到CSV中,以与我拥有的Powershell脚本进行交互:

TicketNumber001 useremail@domain.com
...
..
.
TicketNumber010 useremail10@domain.com


我非常感谢您的意见,我是python的新手,这是第一次使用selenium。

谢谢你,

如果您的表没有其他额外的数据,您可以使用find_elements直接只获取表数据。

Tickets = driver.find_elements(By.XPATH,"//table//td[3]")

这将为您提供一个可以操作的元素数组。您可以在数组中迭代以获得文本

for ticket in Tickets:
print("Ticket:"+ ticket.text)

假设您的电子邮件和票证总是相等的

Emails = driver.find_elements(By.XPATH,"//table//td[8]")
Tickets = driver.find_elements(By.XPATH,"//table//td[3]")
for i in range(0, len(Tickets)-1):
print(Tickets[i].text + " : " + Emails[i].text)

最新更新