2016-04-09 137 views
0

firebug硒不会找到我的元素

console

我有一个项目,我选择了硒开1-5链接。它停在第三个环节。我遵循了以前成功请求的相同方法。在脚本继续在我的控制台中运行之前,我已经允许17秒钟并观看了页面加载。我只是不知道为什么它不能找到这个环节,我希望这件事情我只是俯瞰...

from selenium import * 
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.common.action_chains import ActionChains 
import csv 
import time 

username = "xxxxxxx" 
password = "xxxxxxx" 
driver = webdriver.Firefox() 
driver.get("https://tm.login.trendmicro.com/simplesaml/saml2/idp/SSOService.php") 
assert "Trend" in driver.title 
elem1 = driver.find_element_by_class_name("input_username") 
elem2 = driver.find_element_by_class_name("input_password") 
elem3 = driver.find_element_by_id("btn_logon") 
elem1.send_keys(username) 
elem2.send_keys(password) 
elem3.send_keys(Keys.RETURN) 
time.sleep(7) 
assert "No results found." not in driver.page_source 
elem4 = driver.find_element_by_css_selector("a.float-right.open-console") 
elem4.send_keys(Keys.RETURN) 
time.sleep(17) 
elem5 = driver.find_element_by_tag_name("a.btn_left") 
elem5.send_keys(Keys.RETURN) 
+4

发布您的代码,而不是代码的图片。 – Andy

+0

'time.sleep()'是相当不可靠的。请参阅http://stackoverflow.com/questions/2835179/how-to-get-selenium-to-wait-for-ajax-response –

+1

还包括实际结果。 –

回答

0

井的原因之一是elem5被标签名称寻找元素,但你传递一个css标签。 “a.btn_left”不是一个html标签名称,所以你的脚本永远不会找到它,因为它根本不存在于dom中。

您或者需要通过css_selector或通过Xpath更好地找到它。如果你想把它作为可靠的和更有前途的证明,我总是试着在可能的情况下使用Xpath在页面上找到至少有2个描述符的元素。

更改此:

elem5 = driver.find_element_by_tag_name("a.btn_left") 

要这样:

elem5 = driver.find_element_by_css_selector("a.btn_left") 

你几乎从来不使用TAG_NAME,主要是因为它会始终检索你传递给它的第一个标签,所以“a”将总是找到第一个链接并点击它,但你的不存在。

0

我用这段代码解决了它。我增加了20秒的时间,信不信由你,我尝试了CSS查找,实际上我离开了a.btn_left,并且遍历了所有元素,而且他们都没有工作,幸运的是,我可以通过tab和key访问功能,以便现在工作。

time.sleep(20) 
driver.get("https://wfbs-svc-nabu.trendmicro.com/wfbs-svc/portal/en/view/cm") 
elem5 = driver.find_element_by_link_text("Devices") 
elem5.send_keys(Keys.ENTER) 
+0

确保你接受你的答案! –