Python selenium webdriver无法单击Paytm“登录/注册”

2024-10-02 08:16:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图找到并点击Paytm“登录/注册”,使用

  1. Python 3.8.0
  2. 硒3.141.0
  3. Chrome版本83.0.4103.97(官方版本)(64位)

然而,webdriver似乎确实找到了元素,但不知何故它没有点击它。下面的Python代码运行良好,没有任何错误。还尝试了不同的定位技术(代码中有注释),但没有成功

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time


def syncClick(driver, timeout, locatorType, locator):
    try:
        WebDriverWait(driver, timeout).until(EC.element_to_be_clickable((locatorType, locator))).click()
    except TimeoutError as e:
        print(e.args)

driver = webdriver.Chrome()
driver.maximize_window()

driver.get('https://paytm.com/')

# syncClick(driver, 10, By.XPATH, '//div[text()="Log In/Sign Up"]')
# syncClick(driver, 10, By.CSS_SELECTOR, '#app > div > div.R-WO > div._3AxU > div._3huM > div._1Vt1 > div')
syncClick(driver, 10, By.CSS_SELECTOR, 'div._3ac-')

time.sleep(10)

driver.close()

Tags: fromimport版本divsupportbytimeas
3条回答

我想你需要等到页面完全加载。您所指的元素首先出现在其他元素之前,因此javascript尚未准备好执行

我已尝试在调用syncClick函数之前等待找到的Digital Gold文本

driver.get('https://paytm.com/')
WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//span[text()='Digital Gold']")))

...
...

syncClick(driver, 20, By.CSS_SELECTOR, 'div._3ac-')

欢迎来到StackOverflow!在检查了网页的HTML代码之后,我推断上述按钮的完整XPATH是/html/body/div/div/div[2]/div[2]/div[3]/div[4]/div。您可以在.find_element_by_xpath()函数中使用此XPATH数据,如下所示:

driver.find_element_by_xpath("/html/body/div/div/div[2]/div[2]/div[3]/div[4]/div")

你只需稍等一下就可以加载页面了,所以在单击操作之前要添加时间

time.sleep(3)
syncClick(driver, 10, By.CSS_SELECTOR, 'div._3ac-')

相关问题 更多 >

    热门问题