2016-08-15 15 views
0

私はidとxpathによって送信ボタンの位置を確認しようとしましたが、それらのどれもが動作していませんでした。私は正しいIDまたはXPathを与えているものの

URL:https://moodle.niituniversity.in/moodle/login/index.php
python seleniumエラーでログインできません:NoSuchElementExceptionエラー

from pyvirtualdisplay import Display 
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
display = Display(visible=0, size=(1024, 768)) 
display.start() 
driver = webdriver.Firefox() 
#driver.set_preference("browser.startup.homepage_override.mstone", "ignore") 
driver.get("https://moodle.niituniversity.in/moodle/login/index.php") 
username = driver.find_element_by_name("username") 
username.clear() 
username.send_keys("User123") 
username.send_keys(Keys.RETURN) 
password = driver.find_element_by_name("password") 
password.clear() 
password.send_keys("pass123") 
password.send_keys(Keys.RETURN) 
password = driver.find_element_by_xpath(".//*[@id='loginbtn']").click() 
driver.get("https://moodle.niituniversity.in/moodle") 
assert "user" in driver.page_source 
driver.close() 
display.stop() 

.NoSuchElementException: Message: Unable to locate element: {"method":"xpath","selector":".//*[@id='loginbtn']"}

+0

あなたは、フレームまたはインラインフレームを探していました?このボタンがフレームやiframeの内側にないことを確認しますか? –

+0

はいこれはiframeにありません – anderson

+0

そしてロケータはどうですか?また、提供されたIdによってのみ要素が存在することを確認してください。 'loginbtn' –

答えて

0

これで問題がタイミングであることができるかもしれない、あなたはを実装する必要があります0以下のようにページ上に存在ボタンまで待機する: -

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 

element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "loginbtn"))) 
element.click() 

全コード:

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 

driver.get("https://moodle.niituniversity.in/moodle/login/index.php") 
username = driver.find_element_by_name("username") 
username.clear() 
username.send_keys("User123") 

password = driver.find_element_by_name("password") 
password.clear() 
password.send_keys("pass123") 

button = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "loginbtn"))) 
button.click() 
+0

どうしてですか? – anderson

+0

これは主に、あなたのインターネットが要素を持つページを読み込むのが遅く、ドライバーの実行が速いために、セレンが要素を取得できなかった理由です。 –

+0

まだ動作しません。 – anderson

関連する問題