Python 在selenium中使用Click()时,页面中的动态元素(表)没有更新,因此我无法';不要检索新数据
我需要从中提取数据的页面: 问题Python 在selenium中使用Click()时,页面中的动态元素(表)没有更新,因此我无法';不要检索新数据,python,selenium,web-scraping,Python,Selenium,Web Scraping,我需要从中提取数据的页面: 问题 每个表中只允许显示100行,因此我必须使用。 如下面的代码所示,我实际上是这样做的,但是每次单击actionActionChains(驱动程序)。单击(元素)。执行()时,都会检索第一个表的结果,而不会转到下一个表的结果 请记住,没有打开新页面,单击将被某种JavaScript截获,在同一页面上执行一些丰富的UI操作,以加载新的数据表 我的期望 我只是想验证我是否可以移动到下一个表,然后我将编辑代码以循环遍历所有表。 这段代码应该从results返回第二个表中的
每个表中只允许显示100行,因此我必须使用。 如下面的代码所示,我实际上是这样做的,但是每次单击action
ActionChains(驱动程序)。单击(元素)。执行()
时,都会检索第一个表的结果,而不会转到下一个表的结果 请记住,没有打开新页面,单击将被某种JavaScript截获,在同一页面上执行一些丰富的UI操作,以加载新的数据表 我的期望
我只是想验证我是否可以移动到下一个表,然后我将编辑代码以循环遍历所有表。 这段代码应该从results返回第二个表中的数据,但实际上它从最初加载URL的第一个表返回值。这意味着单击操作没有发生或实际上发生了,但是没有通过与页面中的动态JavaScript元素交互来更新WebDriver
驱动程序
内容
谢谢你的帮助
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()
终于找到了解决方案强> 解决方案的名称。
正如所料,问题在于单击操作本身。不知何故,它没有做对,或者根本没有做,如解决问题中所示 解决方案是使用Javascript执行单击按钮。
换行30
ActionChains(驱动程序)。单击(元素)。执行()
具体如下:
driver.execute_script("arguments[0].click();",element)
就这样。我知道你已经回答了你的问题,但让我提出一个更简单的替代方案。
element.click()
有效吗?不,我以前尝试过。我还尝试了python中的每一段代码,以不同的方式创建单击操作,但只有这个Javascript执行方法对我有效。可能是因为我的网站运行了大量javascript内容。谢谢你的回答。我将来一定会用的,不客气