我有一个脚本,可以从网站上抓取联系人并将其发送到 csv 文件。唯一的问题是,一旦进入站点并登录,即使我指定了链接ID,它也无法找到要单击的链接ID。我在指定查找链接的行中收到超时错误。我该如何解决它?
登录并搜索按钮的脚本部分:
### Download new version of ChromeDriver into same folder
driver_path = "C:/Users/owner/Downloads/chromedriver-win64/chromedriver-win64/chromedriver.exe"
chrome_service = ChromeService(executable_path=driver_path)
#options=webdriver.ChromeOptions()
#driver = webdriver.Chrome(service=chrome_service, options=options)
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
# driver.get(('https://www.editorialmanager.com/ijrm/default1.aspx'))
driver.get(("https://www.editorialmanager.com/ijrm/default1.aspx"))
sleep(10)
driver.switch_to.default_content()
# FINDING an input:
driver.switch_to.frame(driver.find_element(By.XPATH, '//*[@id="content"]'))
driver.switch_to.frame(
driver.find_element(By.XPATH, "/html/body/table[2]/tbody/tr/td[2]/iframe")
)
driver.find_element(By.XPATH, '//*[@id="username"]').send_keys(username)
driver.find_element(By.XPATH, '//input[@id="passwordTextbox"]').send_keys(password)
driver.implicitly_wait(10)
driver.find_element(By.XPATH, '//*[@id="emLoginButtonsDiv"]/input[3]').click()
driver.implicitly_wait(10)
sleep(5)
# ### Going to the Search People Page
driver.switch_to.default_content()
driver.switch_to.frame(driver.find_element(By.XPATH, '//*[@id="content"]'))
wait = WebDriverWait(driver, 60)
##wait.until(
## EC.element_to_be_clickable((By.XPATH, '//*[@id="ctl00_Folders_SearchPeople"]'))
wait.until(EC.visibility_of_element_located((By.ID, 'lnkSearchPeople')))
wait.until(EC.element_to_be_clickable((By.ID, 'lnkSearchPeople'))).click()
sleep(3)
您的定位器不正确。在 HTML 中,它显示属性 link-id 而不是 id。 所以 By.ID 在这里不起作用。
使用 CSS 或 xpath 选择器
(By.XPATH,//*[@link-id = 'lnkSearchPeople'])
(By.CSS,[link-id = 'lnkSearchPeople'])