接受 1 个位置参数,但使用 Selenium Python 给了 2 个错误
Posted
技术标签:
【中文标题】接受 1 个位置参数,但使用 Selenium Python 给了 2 个错误【英文标题】:Takes 1 positional argument but 2 were given error using Selenium Python 【发布时间】:2021-12-30 11:22:54 【问题描述】:您好,我试图点击网站上的男性按钮:https://fs2.formsite.com/meherpavan/form2/index.html?1537702596407 但它给了我错误:
TypeError: element_to_be_clickable() takes 1 positional argument but 2 were given.
代码是
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
driver=webdriver.Chrome(executable_path="D:\ChromeDriverExtracted\chromedriver")
driver.get("https://fs2.formsite.com/meherpavan/form2/index.html?1537702596407")
WebDriverWait(driver, 2).until(EC.element_to_be_clickable(By.XPATH, "//type[@name='RESULT_RadioButton-7_0']")).click()
【问题讨论】:
好的。找到答案刚刚写了``` driver.find_element_by_xpath("//*[@id='q26']/table/tbody/tr[1]/td/label")。点击()``` 【参考方案1】:这是一个你应该传递的元组,
EC.element_to_be_clickable((By.XPATH, "//type[@name='RESULT_RadioButton-7_0']")))
【讨论】:
它没有点击按钮。错误 DeprecationWarning: executable_path has been deprecated, please pass in a Service object driver=webdriver.Chrome(executable_path="D:\ChromeDriverExtracted\chromedriver") @NikaTheKilla 这个问题出现在 selenium、pip 和 python 更新中,查看这里***.com/questions/64717302/…【参考方案2】:您需要在element_to_be_clickable()
中传递一个元组,如下所示:
EC.element_to_be_clickable((By.XPATH, "//type[@name='RESULT_RadioButton-7_0']"))
但是,您的工作代码行将是:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//label[@for='RESULT_RadioButton-7_0']"))).click()
浏览器快照:
此外,selenium4 以下行:
webdriver.Chrome(executable_path="D:\ChromeDriverExtracted\chromedriver")
现在与DeprecationWarning
关联如下:
DeprecationWarning: executable_path has been deprecated, please pass in a Service object
所以你需要传递一个 Service
类的实例作为参数,你的有效代码块将是:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
s = Service('D:\ChromeDriverExtracted\chromedriver.exe')
driver = webdriver.Chrome(service=s)
driver.get("https://fs2.formsite.com/meherpavan/form2/index.html?1537702596407")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//label[@for='RESULT_RadioButton-7_0']"))).click()
参考文献
您可以在以下位置找到一些相关的详细讨论:
init() takes 2 positional arguments but 3 were given using WebDriverWait and expected_conditions as element_to_be_clickable with Selenium Python Use Selenium with Brave Browser pass service object written in python【讨论】:
它给了我这个错误并且它没有点击它错误:回溯(最近一次调用最后一次):文件“C:\ Users \ Puhceto \ SeleniumProject \ venv \ Clicking A Button.py”,第 10 行,在以上是关于接受 1 个位置参数,但使用 Selenium Python 给了 2 个错误的主要内容,如果未能解决你的问题,请参考以下文章
TypeError: login() 接受 1 个位置参数,但给出了 2 个
Python:函数接受 1 个位置参数,但给出了 2 个,如何?