2017-07-24 61 views
0

使用Python 3Python和Selenium - 获取可见元素

情况

我选择具有一定的XPath查询一些元素。

该xpath查询有许多匹配项。

我想抓取与此刻可见的元素相对应的精确匹配。

总是有N项匹配(为N大于1)

有永远只有一个匹配是可见的。

其实,这是关于在特定时刻显示或不显示javascript的弹出窗口。

问题

如何可以遍历所有的这些结果,并知道哪一个用户是可见的?

UPDATE

的网址是:go to website

如果等待几秒钟,就显示一个弹出窗口。

我的XPath查询是:

//div[@class='wrapper-code-reveal']//input[@class='code']

但也有在这种情况下23场比赛。

我怎样才能得到正在显示的精确匹配?

我试过点击它,当不可见时会出现异常。

codigos_descuento = driver.find_elements_by_xpath("//div[@class='wrapper-code-reveal']//input[@class='code']") 

for codigo in codigos_descuento: 
    try: 
     codigo.click() 
     codigo_descuento_texto = codigo.get_attribute('value') 
    except: 
     print(traceback.format_exc()) 
     continue 

回答

1

这里是Selenium的一个工作示例。我不是通过查看找到正确的一个,而是从URL中获得offer ID并使用它来找到正确的元素。

from selenium import webdriver 

driver = webdriver.Chrome() 


def get_offer_id_from_url(url): 
    offer_id = url.split('#')[1] 
    offer_id = offer_id.split('-')[1] 
    return offer_id 


def get_discount_code(url, offer_id): 
    offer_div_id = 'd-%s' % offer_id 
    driver.get(url) 
    discount_elem = driver.find_element_by_xpath(
     "//div[@id='%s']//input[@class='code']" % offer_div_id 
    ) 
    discount_code = discount_elem.get_attribute('value') 
    return discount_code 


url = 'https://www.savoo.es/c-Alimentacion-codigo-promocional.html#p-5204957' 
offer_id = get_offer_id_from_url(url) 
discount_code = get_discount_code(url, offer_id) 
print(discount_code) 
+0

Muchas gracias tito Paco。 :)祝你有美好的一天。 –

相关问题