无法在 Python 中使用 Selenium 获取元素 link
Can't get element link with Selenium in Python
我正在尝试单击该项目,但我似乎无法从该 div 中的元素中获取 link。我觉得我什么都试过了。
下面是 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.switchto 另一个 window 然后 driver.close()。如果没有,那么您可以只使用 driver.back() 重复抓取元素,然后使用它的索引来点击 ()。
我正在尝试单击该项目,但我似乎无法从该 div 中的元素中获取 link。我觉得我什么都试过了。
下面是 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.switchto 另一个 window 然后 driver.close()。如果没有,那么您可以只使用 driver.back() 重复抓取元素,然后使用它的索引来点击 ()。