1
兩次迭代後失敗並顯示錯誤。在xpath使用seelnium ide和python循環執行兩次迭代後失敗我的程序
如果發生這種情況是因爲沒有通過selenium ide找到xpath,那麼爲什麼它在循環的第二次迭代中不會失敗。
如何在沒有任何錯誤的情況下獲得輸出,並且一個一個地點擊所有8個Url或者xpath可用或不可用。
這裏是我的代碼:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
#base Url
baseurl="http://www.incredibleindia.org"
driver = webdriver.Firefox()
driver.implicitly_wait(2)
driver.get(baseurl)
driver.implicitly_wait(2)
main_links_tabs=driver.find_elements_by_xpath("html/body/div[3]/div/div[1]/div[2]/ul/li/a")
all_tablength=len(main_links_tabs)
print all_tablength
main_link_list=[]
for i in range(all_tablength):
driver.implicitly_wait(3)
links=main_links_tabs[i].get_attribute('href')
main_link_list.append(links)
#all main_tab_link hit one by one
for i in main_link_list:
print i
driver.implicitly_wait(30)
driver.get(i)
#travel tabs data
print "tabl links hit one by one"
travel_tabs_sublinks=driver.find_elements_by_xpath(".//*[@id='left-inner-content']/div[2]/div/ul/li/a")
travel_tabs_sublinks_len=len(travel_tabs_sublinks)
print travel_tabs_sublinks_len
輸出:
所有的8
http://www.incredibleindia.org/en/travel
tabl links hit one by one
http://www.incredibleindia.org/en/trade
tabl links hit one by one
http://www.incredibleindia.org/en/#media
tabl links hit one by one
Traceback (most recent call last):
File "incredibleindia.py", line 27, in <module>
travel_tabs_sublinks=driver.find_elements_by_xpath(".//*[@id='left- inner-content']/div[2]/div/ul/li/a")
File "/usr/local/lib/python2.7/dist- packages/selenium/webdriver/remote/webdriver.py", line 244, in find_elements_by_xpath
return self.find_elements(by=By.XPATH, value=xpath)
File "/usr/local/lib/python2.7/dist- packages/selenium/webdriver/remote/webdriver.py", line 679, in find_elements
{'using': by, 'value': value})['value']
File "/usr/local/lib/python2.7/dist- packages/selenium/webdriver/remote/webdriver.py", line 175, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python2.7/dist- packages/selenium/webdriver/remote/errorhandler.py", line 166, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidSelectorException: Message: The given selector .//*[@id='left-inner-content']/div[2]/div/ul/li/a is either invalid or does not result in a WebElement. The following error occurred:
InvalidSelectorError: Unable to locate an element with the xpath expression .//*[@id='left-inner-content']/div[2]/div/ul/li/a because of the following error:
TypeError: Argument 1 of Document.createNSResolver is not an object.
Stacktrace:
at FirefoxDriver.annotateInvalidSelectorError_ (file:///tmp/tmpDolyM9/extensions/[email protected]/components/driver-component.js:10245)
at FirefoxDriver.prototype.findElementsInternal_ (file:///tmp/tmpDolyM9/extensions/[email protected]/components/driver-component.js:10303)
at fxdriver.Timer.prototype.setTimeout/<.notify (file:///tmp/tmpDolyM9/extensions/[email protected]/components/driver-component.js:603)
如何使用XPath具有顯式等待,因爲我在等待隱含使用。我想用xpath打印所有鏈接和子鏈接。 – Mukesh 2015-03-13 07:18:01
您是如何在WebDriverWait(驅動程序,10).until(EC.presence_of_element_located((By.CSS_SELECTOR,「div.menu li> a」))) – Mukesh 2015-03-13 07:45:43
@ user3902208中找到CSS選擇器的,對於xpath,將'By.CSS_SELECTOR'與'By.XPATH'。我通過在瀏覽器開發工具中檢查頁面源來找到選擇器。希望有所幫助。 – alecxe 2015-03-13 13:18:48