代码之家  ›  专栏  ›  技术社区  ›  Alexander Flores

Webdriver不会单击第二个链接

  •  1
  • Alexander Flores  · 技术社区  · 3 年前

    我想用selenium制作一个机器人,但我的机器人无法访问网站的其他部分。在我的代码中,我的驱动程序成功转到nike。com公司( 1 ),然后成功单击并加载Nike内的其他链接(单击中的圆圈区域( 1. )然后转到( 2 ))。然后,我的问题从这里开始,我尝试单击并加载其他链接( 2. )但我的司机什么也不做。我知道我的司机找到了第二个链接,因为如果我打印出“second”。text“然后我得到正确的文本( 3 )。。。

    我对硒还是个新手,我几乎不知道自己在做什么。任何帮助都会很有帮助。 非常感谢。

        from selenium import webdriver
        from selenium.webdriver.common.by import By
        from selenium.webdriver.chrome.options import Options
        from selenium.webdriver.chrome.service import Service
        from webdriver_manager.chrome import ChromeDriverManager
        
        if __name__ == '__main__':
            options = Options()
            options.add_argument("start-maximized")
            driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
    
            driver.get("https://www.nike.com/men")
    
            driver.implicitly_wait(5)
            first = driver.find_element(by=By.CLASS_NAME, value="prl3-sm")
            first.click()
    
            driver.implicitly_wait(5)
            second = driver.find_element(by=By.CSS_SELECTOR, value='a[class="JSftBPEZ"]')
            #print(second.text)
            second.click()
    
    1 回复  |  直到 3 年前
        1
  •  0
  •   Sonali Das    3 年前

    我已经测试过了。 通过Javascript点击它的点击。

    下面是单击第二个链接的代码。

    second = driver.find_element(by=By.CSS_SELECTOR, value='a[class="JSftBPEZ"]')
    driver.execute_script("arguments[0].click();",second)
    

    顺便说一句,您可能需要正确定义xpath。示例指向6个元素的第二个链接。但无论如何,通过Javascript单击它会单击第一个选项