implicitly_wait不起作用 蟒Selenium



我遇到了问题-使用implicitly_wait时,单击按钮'添加到袋子'不会发生。如果我利用时间。睡觉,一切都可以,但时间。睡觉是不好的方法。那么,我需要什么?获取URl,点击设备,点击"添加到包"按钮。是的,我知道https://selenium-python.readthedocs.io/waits.html和https://www.selenium.dev/documentation/webdriver/waits/,但它对我没有帮助。请帮帮我)

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
from selenium.common.exceptions import WebDriverException
import time
try:
browser = webdriver.Chrome()
browser.maximize_window()
browser.get("https://www.oumua.me/shop")# Get URL
browser.implicitly_wait(10)
browser.find_element(By.XPATH, '//*[@id="__next"]/div[2]/div/div[1]/div[1]').click() #Click on device button
browser.find_element(By.XPATH, '/html/body/div[1]/div[2]/div[3]/div[1]').click() #Click Add to the bag that doesn't working

也许等待它是可点击的?

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
element = WebDriverWait(driver, 20).until(
EC.element_to_be_clickable((By.XPATH, "'/html/body/div[1]/div[2]/div[3]/div[1]")))
element.click()

我可以尝试使用javascript。

js = 'document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.click();'
driver.execute_script(js)

我检查了一下,它在没有添加implicitexplicit的情况下为我工作,如果你不想使用waits,你可以尝试下面的方式点击这个按钮

element = driver.findElement(By.CSS_SELECTOR(".styles__Button-sc-1fxagfa-17.styles__AddButton-sc-1fxagfa-18.bZGRJp.TZGpT"))
driver.execute_script("arguments[0].click();", element)

我也试过运行它,它不适合我。似乎browser.page_source不知何故没有时间更新。我认为最好像@data_sc那样使用显式等待。

注:这里它可以工作,但它不是最好的解决方案:

from time import sleep
driver.find_element(By.XPATH, '//*[@id="__next"]/div[2]/div/div[1]/div[1]').click()
sleep(1)
driver.find_element(By.XPATH, '/html/body/div[1]/div[2]/div[3]/div[1]').click()

最新更新