__init_uuu()接受2个位置参数,但在尝试使用_element_located()的presence_等待元素时给出了3个位置参数

2024-09-30 16:31:17 发布

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

原木扔给我这个:

element.until(EC.presence_of_element_located(By.XPATH("//*[@id='menu-item-9145']/a'")))
TypeError: 'str' object is not callable

代码试用:

class Descaro:
    def __init__(self, driver):
        self.driver = driver

    def Descaro(self):
        time.sleep(3)
        self.driver.find_element_by_xpath("//*[@id='splashModal']/a[1]").click()
        print("deberia estar en la pagina de fondo")
        element = WebDriverWait(self.driver, 10)
        element.until(EC.presence_of_element_located(By.XPATH("//*[@id='menu-item-9145']/a'")))
        element.click()

我已经试过了:

element.until(EC.presence_of_element_located(By.XPATH, '//*[@id="menu-item-9145"]/a''))) 

但也不管用,因为:

__init__() takes 2 positional arguments but 3 were given

Tags: ofselfidbydefdriverelementitem
1条回答
网友
1楼 · 发布于 2024-09-30 16:31:17

你需要注意几件事:

  • ^{}应该在tuple内调用,因为它不是函数,而是,其中初始值设定项只希望1参数超出隐式self
  • ^{}不能确保元素是可交互的。相反,您需要使用^{}

解决方案

您需要为element_to_be_clickable()诱导WebDriverWait,您可以使用以下Locator Strategy

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='menu-item-9145']/a"))).click()

注意:您必须添加以下导入:

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

参考文献

您可以在以下内容中找到一些相关的详细讨论:

相关问题 更多 >