Python/Selenium 网页抓取脚本中的“str”对象不可调用错误

问题描述 投票:0回答:1

我有一个非常简单的Python/Selenium网络抓取脚本,如下:

from re import L
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By

cService = webdriver.ChromeService(executable_path="C:\\Users\\Frank\\Documents\\Visual Studio 2022\\Projects\\IV3_WebsiteAutomation\\chromedriver.exe")
driver = webdriver.Chrome(service = cService)
driver.get("https://app.iv3.us/login")
print(driver.title)

search_bar = driver.find_element("name", "userName")
search_bar.send_keys("[email protected]")
search_bar = driver.find_element("name", "password")
search_bar.send_keys("xxxxxxxxxxxxxxx")
search_bar.send_keys(Keys.RETURN)

# res = driver.find_element(By.XPATH(".//a[contains(@href,'View Active')]"))
# res = driver.find_element(By.XPATH("//a[contains(@href,'View Active')]"))
XXX = driver.find_element(By.XPATH("//div[./h4[text()='Moved from Registered Address']]//a[text()='View Active']"))

driver.close() 

运行时,“XXX = driver.find_element...”行会产生可怕的 'str' object is not callable 错误。

通过谷歌搜索该错误,我找到了许多帖子,描述了由于尝试对变量使用 Python 保留字而导致此错误的原因,但我看不出在我的脚本中会发生这种情况;我什至将“res”变量名称更改为“XXX”,但这并没有改变任何东西。

难道是这一行:

from selenium.webdriver.common.by import By

随后在脚本最后一行中使用它会导致问题吗? 我从 Selenium '定位元素'教程 中得到了这个用法,所以如果这是问题所在,我会感到惊讶,但是......

TIA,

弗兰克

python selenium-webdriver
1个回答
0
投票

这行语法不正确。

driver.find_element(By.XPATH("//div[./h4[text()='Moved from Registered Address']]//a[text()='View Active']"))

应该是这样的形式

driver.find_element(By.XPATH, "...")

或者根据你的情况

driver.find_element(By.XPATH, "//div[./h4[text()='Moved from Registered Address']]//a[text()='View Active']")
© www.soinside.com 2019 - 2024. All rights reserved.