2016-04-09 135 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

確保你接受你的答案! –