2017-02-01 42 views
0

我使用此代碼創建一個腳本填充數據本身我如何使用Selenium在新的頁面,以查找元素

片段#1,完成後,在同一個水龍頭打開一個新頁面按下登錄後。我想使用的代碼片段#2查找按鈕的代碼刷新,點擊它,但是每次我得到一個錯誤,在此之後顯示:

片段#1

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
import re 
import time 

browser = webdriver.Firefox() 
browser.get('the url') 

user = browser.find_element_by_css_selector('#Frm_Username') 
user.send_keys('admin') 

password = browser.find_element_by_css_selector('#Frm_Password') 
password.send_keys('admin') 

clickLogin = browser.find_element_by_css_selector('#LoginId') 
clickLogin.click() 

browser.implicitly_wait(20) 

片段#2

link = browser.find_element_by_css_selector('#Btn_ReFresh')   
link.click() 

錯誤:

Traceback (most recent call last): 
    File "C:/Users/myName/Desktop/loginTest1.py", line 30, in <module> 
    link = browser.find_element_by_css_selector('#Btn_ReFresh') 
    File "C:\Users\myName\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 437, in find_element_by_css_selector 
    return self.find_element(by=By.CSS_SELECTOR, value=css_selector) 
    File "C:\Users\myName\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 752, in find_element 
    'value': value})['value'] 
    File "C:\Users\myName\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 236, in execute 
    self.error_handler.check_response(response) 
    File "C:\Users\myName\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 192, in check_response 
    raise exception_class(message, screen, stacktrace) 
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: {"method":"css selector","selector":"#Btn_ReFresh"} 
Stacktrace: 
    at FirefoxDriver.prototype.findElementInternal_ (file:///C:/Users/myName/AppData/Local/Temp/tmpkiy2vz8t/extensions/[email protected]/components/driver-component.js:10770) 
    at fxdriver.Timer.prototype.setTimeout/<.notify (file:///C:/Users/myName/AppData/Local/Temp/tmpkiy2vz8t/extensions/[email protected]/components/driver-component.js:625) 

所有我想要的是找到一個元素,並雙擊它,在新的頁面是開放腳本登錄後在相同的水龍頭中編輯?

回答

0

當您使用硒時,您應該考慮到在每個頁面中您都是瀏覽器變量應該引用該頁面,例如在這裏您使用browser.get()轉到url,但是當您使用clicklogin.click()時,您將轉到另一個頁面,不參考那個頁面,所以當你使用link = browser.find_element_by_css_selector('#Btn_ReFresh')它給了你錯誤和錯誤說,無法找到元素,因爲瀏覽器不在該頁面,以解決問題,我建議你看看當你點擊登錄瀏覽器應該瀏覽器去哪個網址通過browser.get那個網址。例如,如果它是一個a標記,請參閱href此元素的屬性,並將其傳遞給browser.get()

+0

感謝您的回答,我試過了您所說的但結果相同,如果您可以通過代碼給我一個示例 –

相關問題