WebDriverWait(Python/Selenium)的类型错误问题

2024-04-26 23:24:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Selenium中使用显式等待时遇到问题。我一直得到以下错误

File "C:/Users/username/path/craigslist_scrape.py", line 108, in <module>
    WebDriverWait(driver,5).until(EC.text_to_be_present_in_element_value(By.XPATH('//p[@class="reply-email-address"]/a[@class="mail app"]')))

TypeError: 'str' object is not callable

我的代码如下。基本上,我是在努力清理电子邮件地址。但是,大多数情况下,除非我单击“回复”,否则电子邮件地址不可见。我想做的是让Selenium单击“回复”,然后等待电子邮件地址显示出来,然后进行删除。我尝试过使用两种不同的方法,但总是出现同样的错误。不知道到底发生了什么。希望有人能帮忙

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.select import Select
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import TimeoutException

driver=webdriver.Chrome()
driver.get('https://nh.craigslist.org/search/reb')

link_list=[]

link=driver.find_elements_by_xpath('//li[@class="result-row"]/a[@href]')
for elem in link:
    print(elem.get_attribute('href'))
    link_list.append(elem.get_attribute('href'))
for link in link_list:
    driver.get(link)
    driver.find_element_by_xpath('//div[@class="actions-combo"]/button[@role="button"]').click()
    WebDriverWait(driver,5).until(EC.text_to_be_present_in_element_value(By.XPATH('//p[@class="reply-email-address"]/a[@class="mail app"]')))
    email=driver.find_element_by_xpath('//p[@class="reply-email-address"]/a').text
    print(email)

Tags: textinfromimportgetbyemaildriver
1条回答
网友
1楼 · 发布于 2024-04-26 23:24:27

好吧,我知道你想做什么了

问题是您使用错误的参数调用了错误的函数。 以下是正确的称呼方式:)

WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, '/html/body/section/section/header/div[2]/div/div[1]/aside')))

主要问题是,您正在告诉函数它应该使用哪个函数查找哪个元素

这里有一个比我回答得更好的答案:Selenium - wait until element is present, visible and interactable

相关问题 更多 >