如何使用selenium一样使用playwright获取数据代码迭代内容?(图)

目前正在处理来自网页上的 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 循环时,它会引发异常,定位器对象不是可迭代的),这是我能走的最远的地方。我确实尝试遵循剧作家的文档但没有成功。如果有人对我如何使用剧作家获取硒等数据有任何建议,我将不胜感激。

© 版权声明
THE END
喜欢就支持一下吧
点赞110 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片