2017-02-01 41 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

感谢您的回答,我试过了您所说的但结果相同,如果您可以通过代码给我一个示例 –

相关问题