繁体   English   中英

Selenium Python-产品数组页面,如何动态单击产品

[英]Selenium Python - Product array page, how do dynamically click a product

saksoff5th.com是我正在使用的网站URL。 我通过主页上的“皮带”搜索,然后单击“男人”链接。 这将我带到男士皮带的产品系列页面。 我想单击阵列上的第二个产品,但出现错误。

我正在使用的代码是。 在这里,我试图将所有这些都放在列表中,然后单击页面上的第二个产品。

elemprodcl = browser.find_element_by_id('search-result-items')
Listprdcl= elemprodcl.find_elements_by_class_name('grid-tile')
elemprodcl2 = Listprdcl[1].find_element_by_class_name('product-tile')
elemprodcl3 = elemprodcl2.find_element_by_class_name('product-image')
elemprodcl4 = elemprodcl3.find_element_by_tag_name('a').click() 

错误收到为:-

Traceback (most recent call last):
  File "C:\Python27\Off5th_Guest_Checkout", line 39, in <module>
    elemprodcl4 = elemprodcl3.find_element_by_tag_name('a').click()
  File "C:\Python27\lib\selenium\webdriver\remote\webelement.py", line 59, in click
    self._execute(Command.CLICK_ELEMENT)
  File "C:\Python27\lib\selenium\webdriver\remote\webelement.py", line 369, in _execute
    return self._parent.execute(command, params)
  File "C:\Python27\lib\selenium\webdriver\remote\webdriver.py", line 164, in execute
    self.error_handler.check_response(response)
  File "C:\Python27\lib\selenium\webdriver\remote\errorhandler.py", line 164, in check_response
    raise exception_class(message, screen, stacktrace)
ElementNotVisibleException: Message: u'Element is not currently visible and so may not be interacted with' ; Stacktrace: 

好吧,你快到了。 您试图单击a Web元素,在该位置应尝试单击img

因此,从您离开的地方继续:

elemprodcl4 = elemprodcl3.find_element_by_tag_name('a')
elemprodcl4.find_element_by_tag_name('img').click()

或仅通过使用单个CSS选择器即可:

browser.find_element_by_css_selector('.search-result-items li:nth-child(2) div > div > a').click()

CSS选择器语法说明-

  • .search-result-items是类名称,因为文本前面带有一个点。
  • li是上述类的后代(子代)。 nth-child表示我们要从孩子列表(数组)中选择哪个孩子
  • diva相似,它们是前面提到的选择器的子代

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM