python - 当我在 selenium 中使用 Click() 时,页面中的动态元素(表)未更新,因此我无法检索新数据
问题描述
我需要从中抓取数据的页面:Digikey 搜索结果
问题
它只允许在每个表中显示 100 行,因此我必须使用NextPageButton在多个表之间移动。如下面的代码所示,我实际上是这样做的,但是results
每次第一个表结果时都会向我检索,并且不会在我的 click action 上移动到下一个表结果ActionChains(driver).click(element).perform()
。
请记住,没有打开新页面,单击将被某种 JavaScript 拦截以在同一页面上执行一些丰富的 UI 内容以加载新的数据表
我的期望
我只是想验证我可以移动到下一张表,然后我将编辑代码以遍历所有这些表。这段代码应该从结果中返回第二个表中的数据,但它实际上返回了最初使用 URL 加载的第一个表中的值。这意味着单击操作未发生或实际发生但WebDriver driver
内容未通过与页面中的动态 JavaScript 元素交互而更新。
我将不胜感激任何帮助,谢谢..
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.expected_conditions import presence_of_element_located
from selenium.webdriver import ActionChains
import time
import sys
url = "https://www.digikey.com/en/products/filter/coaxial-connectors-rf-terminators/382?s=N4IgrCBcoA5QjAGhDOl4AYMF9tA"
chrome_driver_path = "..PATH\\chromedriver"
chrome_options = Options()
chrome_options.add_argument ("--headless")
webdriver = webdriver.Chrome(
executable_path= chrome_driver_path
,options= chrome_options
)
with webdriver as driver:
wait = WebDriverWait(driver, 10)
driver.get(url)
wait.until(presence_of_element_located((By.CSS_SELECTOR, "tbody")))
element = driver.find_element_by_css_selector("button[data-testid='btn-next-page']")
ActionChains(driver).click(element).perform()
time.sleep(10) #too much time i know, but to make sure it is not a waiting issue. something needs to be updated
results = driver.find_elements_by_css_selector("tbody")
for count in results:
countArr = count.text
print(countArr)
print()
driver.close()
解决方案
推荐阅读
- java - 如何在 AngularJs 应用程序中传输表情符号
- c++ - Cuda 基本程序(将值写入矩阵和 std:cout 不起作用);主函数未启动
- c - 如何将字体设置为用户使用字体选择器选择的字体?
- php - 删除获取请求的 url .php 扩展名和参数?
- vue.js - Vue js如何使用props值到v-model
- nginx - 使用 nginx 反向代理丢失 POST 请求正文
- arrays - 如何将 json 数据显示到 laravel 刀片中?
- php - php sqlsrv 通过多台服务器连接到一个特定的数据库
- java - 如何通过 LLRP 从 EPC RFID 标签读取用户数据(内存)?
- typescript - 如何修复 no-unsafe-any 规则?