【发布时间】:2022-06-21 16:53:10
【问题描述】:
目前正在处理网页上 HTML 表格中的数据,如下所示:
我有以下使用 playwright 的 python 代码:
from config import CLINK_ID, CSA_PWD, MY_URL
from playwright.sync_api import sync_playwright
import time
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page()
page.goto(MY_URL)
page.fill('input#username', CLINK_ID)
page.fill('input#password', CSA_PWD)
page.click('button.btn.btn-lg.btn-primary.btn-block')
page.wait_for_load_state()
page.hover('body > div:nth-child(1) > div.top-menu > div > nav > ul > li:nth-child(3) > a')
page.click('body > div:nth-child(1) > div.top-menu > div > nav > ul > li:nth-child(3) > ul > li:nth-child(3) > a') # GWL compare
page.wait_for_load_state()
page.select_option('#listTable_length > label > select', value="-1") # show all entries
page.wait_for_load_state(timeout=0)
table = page.locator('//*[@id="listTable"]')
row = (table.locator('tr'))
print(row.locator('td').all_text_contents())
期望收到带有表格内容的控制台输出。但输出是: 我很确定日期是存在的,因为我在使用 selenium 时收到了预期的结果,代码如下:
from config import CLINK_ID, CSA_PWD, MY_URL
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions as EC
driver=webdriver.Chrome("C:\\Users\\BF6141\\Documents\\chromedriver_win32\\chromedriver.exe")
url = MY_URL
driver.get(url=url)
driver.find_element_by_xpath('//*[@id="username"]').send_keys(CLINK_ID)
driver.find_element_by_xpath('//*[@id="password"]').send_keys(CSA_PWD)
driver.find_element_by_xpath('/html/body/div/form/button').click()
element_to_hover = driver.find_element_by_xpath('/html/body/div[1]/div[1]/div/nav/ul/li[2]/a')
hover = ActionChains(driver=driver).move_to_element(element_to_hover)
hover.perform()
driver.find_element_by_xpath('/html/body/div[1]/div[1]/div/nav/ul/li[2]/ul/li[3]/a').click() # GWL compare
driver.find_element_by_xpath('//*[@id="listTable_length"]/label/select/option[5]').click() # show all entries
driver.implicitly_wait(3)
table = driver.find_element_by_xpath('//*[@id="listTable"]')
time.sleep(2)
for row in table.find_elements_by_css_selector('tr'):
for d in row.find_elements_by_css_selector('td'):
print(d.text)
输出如下:
我希望在剧作家身上看到类似的东西。 我知道我没有使用剧作家代码迭代内容(我不知道该怎么做,因为当我使用定位器选择元素并尝试放置一个 for 循环时,它会抛出一个异常,定位器对象不是可迭代),这是我能走的最远的地方。 我确实尝试遵循剧作家here 的文档但没有成功。如果有人对我如何像使用 selenium 一样使用 playwright 获取数据有任何建议,我将不胜感激。
【问题讨论】:
标签: python selenium html-table playwright-python