我有一个非常简单的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,
弗兰克
这行语法不正确。
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']")