Selenium调用find_element()抛出InvalidArgumentException异常求助
问题解决:Selenium find_element() 抛出 InvalidArgumentException
问题原因
你调用find_element()时传入了双层括号,导致参数格式错误。find_element()接受两个独立参数(定位策略和定位符),或者一个包含这两个元素的元组,但你额外多套了一层括号,让函数接收到的参数结构不符合要求,从而触发该异常。
修复代码
只需去掉find_element()的双层括号即可,两种正确写法任选其一:
写法1:传入两个独立参数
mail = bot.find_element(By.XPATH, "/html/body/div[1]/div[2]/div/div[2]/div[1]/div/div[2]/div/form/form/div[3]/div[1]/div/div/input")
写法2:传入单一层元组(与你WebDriverWait部分的正确写法一致)
mail = bot.find_element((By.XPATH, "/html/body/div[1]/div[2]/div/div[2]/div[1]/div/div[2]/div/form/form/div[3]/div[1]/div/div/input"))
额外优化建议
- 绝对XPATH依赖页面固定结构,页面稍有改动就会失效,优先使用相对XPATH、
id、name或css_selector等更稳定的定位方式。 - 可以将重复的定位符存为变量,避免冗余代码:
email_locator = (By.XPATH, "/html/body/div[1]/div[2]/div/div[2]/div[1]/div/div[2]/div/form/form/div[3]/div[1]/div/div/input") try: WebDriverWait(bot, delay).until(EC.presence_of_element_located(email_locator)) except TimeoutException: print("Loading took too much time!") mail = bot.find_element(*email_locator)
内容的提问来源于stack exchange,提问作者user19845343
相关产品推荐
相关产品推荐

