__init__() 接受 2 个位置参数,但 3 个被尝试使用 Presence_of_element_located() 等待元素

问题描述

日志向我抛出这个:

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

解决方法

您需要注意以下几点:


解决方案

您需要为 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

参考

您可以在以下位置找到一些相关的详细讨论:

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...