如何解决__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
解决方法
您需要注意以下几点:
-
presence_of_element_located()
应该在tuple
中调用,因为它不是一个 函数,而是一个 类,其中初始化程序只需要 1 超越隐含 自我 的论证
-
presence_of_element_located()
不能确保元素可交互。相反,您需要使用element_to_be_clickable()
解决方案
您需要为 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
参考
您可以在以下位置找到一些相关的详细讨论:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。