2016-05-28 6 views
2

Я пытаюсь войти в мой linkedin, используя python selenium. Я могу открыть свою домашнюю страницу, но после того, что я хочу, чтобы открыть следующую ссылку подарок на моей домашней страницеКак нажать на ссылку, используя python selenium?

<a href="/profile/edit?trk=nav_responsive_sub_nav_edit_profile"> 
Edit Profile 
</a> 

Я использовал следующий код, который позволяет мне открыть мой homepage-

import getpass 
from selenium import webdriver 
from bs4 import BeautifulSoup 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.support.ui import WebDriverWait 
url = "https://www.linkedin.com/uas/login" 
driver = webdriver.Firefox() 
driver.get(url) 
username = 'email-id' 
password = 'password' 
user = driver.find_element_by_name("session_key") 
for j in username: 
    user.send_keys(j) 
pasw = driver.find_element_by_name("session_password") 
for j in password: 
    pasw.send_keys(j) 
driver.find_element_by_css_selector("div.form-buttons>input").click() 
driver.find_element_by_link_text("Edit Profile").click() 

но я получить следующее сообщение об ошибке Сообщение-

selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: {"method":"link text","selector":"Edit Profile"}

+0

Вы можете использовать Xpath здесь, чтобы найти ссылку и нажмите ... потому что текст ссылки имеет дополнительные пробелы или \ t, \ n ... которые не найдены по тексту ссылки ... –

+0

driver.find_element_by_xpath ("html/body/дел [2]/дел [2]/дел/дел [1]/мкл/Li [2]/мкл/л i [1]/a "). click() - это правильный формат для использования Xpath, чтобы найти ссылку и нажать на нее? – cgkentrus

ответ

0

Кажется, что «Редактировать профиль» это просто вариант для выпадающего меню «Профиль», так что не видно initialy. Сначала вы должны нажать «Профиль», чтобы открыть раскрывающееся меню. Попробуйте:

driver.find_element_by_link_text("Profile").click() 
driver.find_element_by_link_text("Edit Profile").click() 

UPDATE

Использование XPath:

driver.find_element_by_xpath('//a[@class="nav-link"][contains(text(),"Profile")]').click() 
driver.find_element_by_xpath('//a[@href="/profile/edit?trk=nav_responsive_sub_nav_edit_profile"]').click() 
+0

Я пробовал ваше предложение, но получил следующую ошибку: selenium.common.exceptions.NoSuchElementException: Сообщение: Не удалось найти элемент: {"method": "link text", "selector": "Profile"} – cgkentrus

+0

Вы уверены, что разрешение доступа, и у вас есть доступ к опции редактирования профиля? – Andersson

+0

Да, я могу войти в систему на главной странице с помощью вышеупомянутого кода, он даже открывается в моем firefox, который отображает весь автоматический процесс входа в систему, но после этого ничего не делает. – cgkentrus

0
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
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.common.exceptions import TimeoutException 
import urllib, os, urllib.request 
import time 

driver = webdriver.Safari() 

usrName = 'your_email' 
pssWrd = "your_password" 

driver.maximize_window() 
driver.get("https://www.linkedin.com/uas/login?") 

driver.find_element_by_name('session_key').send_keys(usrName) 
driver.find_element_by_class_name('password').send_keys(pssWrd) 
driver.find_element_by_name('signin').click() 
0

Это звучит, вероятно, что ваша проблема может быть решена путем ожидания явно для элементов, которые будут присутствовать на странице , Смотрите раздел 5.1 Явные Уэйтса следующей документации

http://selenium-python.readthedocs.io/waits.html

Что-то вроде этого:

wait = WebDriverWait(driver, 10) 
element = wait.until(EC.element_to_be_clickable((By.ID, 'someid'))) 

Примечание: явное ожидание следует использовать после того, как вы ввели имя пользователя, пароль и нажал отправить

Смежные вопросы