如何解决“将目标移出边界”的Selenium错误?

lnlaulya  于 2023-01-05  发布在  其他
关注(0)|答案(2)|浏览(100)

我试图模拟“加载更多列表”按钮上的“https://empireflippers.com/marketplace/“网页上的clikcin,直到按钮不再是。我尝试了以下代码,但它导致“移动目标出边界”错误。

from selenium import webdriver      
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
from selenium.webdriver.common.action_chains import ActionChains



HOME_PAGE_URL = "https://empireflippers.com/marketplace/"

driver = webdriver.Chrome('./chromedriver.exe')
driver.get(HOME_PAGE_URL)

while True:
    try:
        element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH,"//button[contains(text(),'Load More Listings')]")))
        ActionChains(driver).move_to_element(element).click().perform()

    except Exception as e:
        print (e)
        break
print("Complete")
time.sleep(10)
page_source = driver.page_source

driver.quit()

我期待检索完整网页的html代码,而不加载更多的列表按钮。

9q78igpj

9q78igpj1#

因此,您尝试单击的按钮似乎在屏幕上不可见。您可以尝试以下操作:

driver.execute_script("arguments[0].click();", driver.find_element(By.XPATH, "//button[contains(text(),'Load More Listings')]"))

去按那个按钮。

nwlqm0z1

nwlqm0z12#

我不知道 * 为什么 *,但是尝试点击两次对我很有效。[如果我尝试用ActionChains点击两次,我仍然会得到同样的错误,而且我对ActionChains不够熟悉,无法尝试修复这个错误;我通常的方法是使用.execute_script通过JavaScript滚动到元素,然后将.click()应用于该元素,这就是我下面所做的。]

while True:
    try:
        element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH,"//button[contains(text(),'Load More Listings')]")))

        # ActionChains(driver).move_to_element(element).click().perform()
        driver.execute_script('arguments[0].scrollIntoView(false);', element)
        try: element.click() # for some reason, the 1st click always fails
        except: element.click() # but after the 1st attempt, the 2nd click works...

    except Exception as e:
        print (e)
        break

相关问题