簡體   English   中英

無法在 Python 中獲取與 Selenium 的元素鏈接

[英]Can't get element link with Selenium in Python

我正在嘗試單擊該項目,但似乎無法從此 div 中的元素獲取鏈接。 我覺得我什么都試過了。

這是 HTML 代碼的示例:

<div class="tile css-yrcab6-Tile e1yt6rrx0" data-testid="product-tile">
  <a style="color:black" href="/product-name">...</a> #what I want to click
</div>

這是我嘗試單擊的幾種方法:

#1

item_div = item.find_element_by_tag_name('div')
item_link = item_div.find_element_by_tag_name('a')
#this returns NoElement for element with tag 'a'

#2

item_link = item.find_element_by_css_selector('div.tile a')
#again, returns no element

我想使用 for 循環單擊頁面上的每個項目

這是到目前為止的代碼:

def do_items(self):
    for page in range(self.maxPages):
        maincontent = driver.find_element_by_id('main-content')
        browsegrid = maincontent.find_element_by_class_name('browse-grid')
        items_on_page = browsegrid.find_elements_by_tag_name('div')
        for item in items_on_page:
            item_div = item.find_element_by_tag_name('div')
            item_link = item_div.find_element_by_tag_name('a')
            item_link.click()
            time.sleep(5)
            break
        break #breaks for the sake of testing, i only want to click the first item to see it works.

我對 selenium 很陌生,所以我不完全明白為什么它找不到元素。 根據我的代碼,我就在上面..

//div[@data-testid='product-tile']/a

一個簡單的 xpath 用於單擊。

現在,您可以通過抓取所有 a 標簽並使用 driver.get() 或單擊每個元素來執行此操作。 如果它轉到另一個頁面,您將使用 driver.switch 到另一個 window,然后是 driver.close()。 如果沒有,那么您可以使用 driver.back() 重復抓取元素,然后使用它的索引 click()。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM