Selenium如何点击年龄验证没有链接

时间:2017-06-28 19:31:20

标签: python selenium xpath

错误结果是因为我无法通过xpath获取正确的元素。 Web句柄是否已更改? 我可以点击图片吗?我不明白如何解释错误。

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:消息:无效的选择器:无法找到   带有xpath表达式的元素   xpath = // div [@id =' ageVerify'] / img [@alt ='是']因为以下原因   错误:TypeError:无法执行'评估' on' Document':The   结果不是节点集,因此无法转换为   期望的类型。 (会议信息:chrome = 59.0.3071.115)(驱动信息:   chromedriver = 2.26.436362   (5476ec6bf7ccbada1734a0cdec7d570bb042aa30),platform = Windows NT   6.1.7601 SP1 x86_64)

2 个答案:

答案 0 :(得分:0)

你的Xpath中div和img之间还有另一个div,所以你的Xpath不会返回任何内容。

"xpath=//div[@id='ageVerify']/img[@alt='Yes']"更改为"//div[@id='ageVerify']/div/img[@alt='Yes']",您应该可以点击它。

答案 1 :(得分:0)

您正在使用驱动程序driver = webdriver.Chrome() 启动webdriver和浏览器browser.find_element_by_xpath("xpath=//div[@id='ageVerify']/img[@alt='Yes']").click()以单击不正确的图像,您必须使用单个变量才能继续执行代码。

弹出窗口上有三个图像

  1. 欢迎来到finewineandgoodspirits"
  2. 没有
  3. 由于您要单击是以继续现场,您需要更新xpath代码以单击是图像

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

    我使用了这段代码,然后点击了Yes image

    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()