2017-07-24 147 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。 :)祝你有美好的一天。 –

相關問題