2017-06-28 77 views
0

錯誤結果,因爲我無法通過xpath獲取正確的元素。 Web句柄是否改變? 我可以點擊圖片嗎?我不明白如何解釋錯誤。Selenium如何點擊不帶鏈接的年齡驗證

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.common.by import By 
from selenium.common.exceptions import NoSuchElementException 

driver = webdriver.Chrome() 

#browser.get('https://ebs.lcb.state.pa.us/OA_HTML/AppsLocalLogin.jsp') 
driver.get('http://www.finewineandgoodspirits.com') 
assert 'Fine Wine & Good Spirits: Shop Online for Wine and Spirits in Pennsylvania' in driver.title 

browser.find_element_by_xpath("xpath=//div[@id='ageVerify']/img[@alt='Yes']").click() 

InvalidSelectorException: Message: invalid selector: Unable to locate an element with the xpath expression xpath=//div[@id='ageVerify']/img[@alt='Yes'] because of the following error: TypeError: Failed to execute 'evaluate' on 'Document': The result is not a node set, and therefore cannot be converted to the desired type. (Session info: chrome=59.0.3071.115) (Driver info: chromedriver=2.26.436362 (5476ec6bf7ccbada1734a0cdec7d570bb042aa30),platform=Windows NT 6.1.7601 SP1 x86_64)

+0

首先,更新你的問題與HTML剪斷其中元素你的目標所在。其次,使用不同的'WebElement'定位器。打開瀏覽器控制檯並開始使用jQuery來驗證選擇器是否有效(例如:'$ x(// div [@ id ='ageVerify']/img [@ alt ='Yes'])''或$( div#ageVerify img [alt =「是」])'爲CSS路徑)。你的錯誤不能比這更詳細。 ('無法找到一個元素與xpath exp ...',這意味着,你的選擇器不好) – iamdanchiv

回答

0

有在你的Xpath div和IMG之間另一個div這樣你的XPath是不返回任何東西。

更改"xpath=//div[@id='ageVerify']/img[@alt='Yes']""//div[@id='ageVerify']/div/img[@alt='Yes']"您應該可以點擊它。

+0

這是中間的div有onclick()事件來關閉彈出窗口;而不是圖像本身。點擊圖片可能不會做任何事情。 –

0

您正在使用驅動程序driver = webdriver.Chrome() 啓動網絡驅動程序和瀏覽器browser.find_element_by_xpath("xpath=//div[@id='ageVerify']/img[@alt='Yes']").click()點擊不正確的圖像,您必須使用單個變量代碼才能繼續。

上有彈出三個圖像

  1. 歡迎finewineandgoodspirits」
  2. 沒有

既然你想點擊是繼續在現場,你需要更新xpath代碼點擊是圖片

driver.find_element_by_xpath("//div[@id='ageVerify']//img[@alt='Yes']").click() 

我已經使用這個代碼,我能點擊是圖像

from selenium import webdriver 

driver = webdriver.Chrome() 

driver.get('http://www.finewineandgoodspirits.com') 
assert 'Fine Wine & Good Spirits: Shop Online for Wine and Spirits in Pennsylvania' in driver.title 
driver.find_element_by_xpath("//div[@id='ageVerify']//img[@alt='Yes']").click() 
+0

對不起,驅動程序/瀏覽器出錯。發佈前我沒有糾正它。我不能相信我除了那個之外其實是沒有錯的。感謝您的幫助! –