python - 如何解决 TypeError: element_to_be_clickable() 需要 1 个位置参数?
问题描述
TypeError: element_to_be_clickable() takes 1 positional argument but 2 were given
运行以下代码时出现错误:
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
url = 'https://www.expedia.co.uk/'
s = Service(ChromeDriverManager().install())
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option("excludeSwitches", ['enable-automation'])
driver = webdriver.Chrome(service=s, options=chrome_options)
driver.get(url)
elem = WebDriverWait(driver, 10).until(EC.element_to_be_clickable(By.CSS_SELECTOR, "#add-flight-switch"))
elem.click()
elem1 = driver.find_element(By.XPATH, "button[aria-label='Leaving from']").text
driver.quit()
我可以看到函数中确实有两个参数elements_to_be_clickable()
,但是By.CSS_SELECTOR
特定选择器类型(在本例中为 CSS)不需要找到该部分吗?
我正在使用选择器集线器来获取 CSS_SELECTOR 信息。
任何有关如何解决的支持将不胜感激。
解决方案
您确实需要两者By
和值,但该函数希望将两个值打包为一个,在tuple
EC.element_to_be_clickable((By.CSS_SELECTOR, "#add-flight-switch"))
如果你深入研究你会看到内部element_to_be_clickable
使用的源代码_find_element
,这个函数解包tuple
要使用的driver.find_element()
class element_to_be_clickable(object):
def __init__(self, locator):
self.locator = locator
def __call__(self, driver):
element = visibility_of_element_located(self.locator)(driver)
...
class visibility_of_element_located(object):
def __init__(self, locator):
self.locator = locator
def __call__(self, driver):
return _element_if_visible(_find_element(driver, self.locator))
...
def _find_element(driver, by):
...
return driver.find_element(*by)
...
推荐阅读
- python - 提取所有行值并创建类似于 Count Vectorizer 的新列
- amazon-web-services - rclone - 如何列出 AWS S3 存储桶中包含最新文件的目录?
- r - 从 R 中的 EFA 输出创建数据框
- shell - 在 Linux 终端中 Ping
- sql - 在所有表中搜索字符串并按该字符串在一行中出现的次数排序(SQLite)
- javascript - 目前正在开发一个待办事项应用程序练习,但在保存和拉取 localStorage 逻辑方面陷入困境
- python - “不支持的操作数类型”错误消息
- javascript - 是否有可用于设置属性的可选链接的建议
- java - Java - 垂直直方图故障排除:最大值损坏?
- azure-data-factory - Azure 工厂 v2 通配符