Python | PhantomJS未点击元素

Python | PhantomJS未点击元素,python,selenium,automation,phantomjs,Python,Selenium,Automation,Phantomjs,我已经花了整整一周的时间试图解决这个问题,这是我最后一次尝试(询问stackoverflow) 我使用phantomjs和selenium进入YouTube的登录页面,填写凭证并登录 我进入登录页面,它会设法填写电子邮件,但无论我尝试什么,它都不会点击“下一步”按钮 现在我都试过了 driver.find_element_by_xpath("""//*[@id="identifierNext"]/content/span""").click() driver.find_element_by_c

我已经花了整整一周的时间试图解决这个问题,这是我最后一次尝试(询问stackoverflow)

我使用phantomjs和selenium进入YouTube的登录页面,填写凭证并登录

我进入登录页面,它会设法填写电子邮件,但无论我尝试什么,它都不会点击“下一步”按钮

现在我都试过了

driver.find_element_by_xpath("""//*[@id="identifierNext"]/content/span""").click()

driver.find_element_by_css_selector("#identifierNext>content>span").click()

webdriver.ActionChains(driver).move_to_element(element).click(element).perform()

driver.find_element_by_id("identifierNext").click()
这些都不管用。我也尝试了javascript命令

我还想补充一点,在没有PhantomJS的情况下,点击元素可以很好地使用selenium

如果这里有人能帮助我,我将不胜感激

编辑:

这些信息可能会有帮助。单击“下一步”后,大约需要一秒钟才能进入密码部分。这是一个滑动动画


此问题尚未回答。

以下是您问题的答案:

几句话:

  • 用于标识“登录”按钮的定位器不唯一。考虑构造一个唯一的<代码> xPath <代码> > <代码>登录> <代码>按钮。
  • 您用来识别
    电子邮件或电话的定位器也需要稍加修改
  • <> LI>可以考虑使用定位器<代码> ID >代码>来识别并点击<代码>下< /COD>按钮。
  • 下面是代码块,它执行相同的操作,并在控制台上单击下一步按钮打印出

    from selenium import webdriver
    from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    import time
    
    dcap = dict(DesiredCapabilities.PHANTOMJS)
    dcap["-phantomjs.page.settings.userAgent-"] = (
        "-Mozilla-5.0 (Windows NT 6.3; WOW64) AppleWebKit-537.36 (KHTML, like Gecko) Chrome-34.0.1847.137 Safari-537.36-"
        )
    
    driver = webdriver.PhantomJS(desired_capabilities=dcap, executable_path="C:\\Utility\\phantomjs-2.1.1-windows\\bin\\phantomjs.exe")
    
    driver.get("https://youtube.com")
    driver.find_element_by_xpath("//button[@class='yt-uix-button yt-uix-button-size-default yt-uix-button-primary']/span[@class='yt-uix-button-content']").click()
    print("Logging in...")
    email_phone = driver.find_element_by_xpath("//input[@id='identifierId']")
    email_phone.send_keys("debanjanb")
    driver.find_element_by_id("identifierNext").click()
    print("Clicked on Next Button")
    

  • 如果回答了您的问题,请告诉我。

    以下是您问题的答案:

    几句话:

  • 用于标识“登录”按钮的定位器不唯一。考虑构造一个唯一的<代码> xPath <代码> > <代码>登录> <代码>按钮。
  • 您用来识别
    电子邮件或电话的定位器也需要稍加修改
  • <> LI>可以考虑使用定位器<代码> ID >代码>来识别并点击<代码>下< /COD>按钮。
  • 下面是代码块,它执行相同的操作,并在控制台上单击下一步按钮打印出

    from selenium import webdriver
    from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    import time
    
    dcap = dict(DesiredCapabilities.PHANTOMJS)
    dcap["-phantomjs.page.settings.userAgent-"] = (
        "-Mozilla-5.0 (Windows NT 6.3; WOW64) AppleWebKit-537.36 (KHTML, like Gecko) Chrome-34.0.1847.137 Safari-537.36-"
        )
    
    driver = webdriver.PhantomJS(desired_capabilities=dcap, executable_path="C:\\Utility\\phantomjs-2.1.1-windows\\bin\\phantomjs.exe")
    
    driver.get("https://youtube.com")
    driver.find_element_by_xpath("//button[@class='yt-uix-button yt-uix-button-size-default yt-uix-button-primary']/span[@class='yt-uix-button-content']").click()
    print("Logging in...")
    email_phone = driver.find_element_by_xpath("//input[@id='identifierId']")
    email_phone.send_keys("debanjanb")
    driver.find_element_by_id("identifierNext").click()
    print("Clicked on Next Button")
    

  • 如果这回答了您的问题,请告诉我。

    等等,测试它。代码经过了良好测试,在我的Windows 8 PC上工作得最好。谢谢。什么不起作用?您在哪一行看到错误?这个错误是怎么回事?你能更新问题区域中的所有信息以便进一步分析吗?谢谢,我没有收到任何错误。我只是在代码后截屏,它仍然在电子邮件部分的登录页面上,它没有单击“下一步”。它仍然没有单击“下一步”按钮。等等,测试它。代码经过了很好的测试,在我的Windows 8 PC上工作得最好。谢谢。什么不起作用?您在哪一行看到错误?这个错误是怎么回事?你能更新问题区域中的所有信息以便进一步分析吗?谢谢,我没有收到任何错误。我只是截屏后的代码,它仍然在登录页面的电子邮件部分,它没有点击下一步。它仍然没有点击下一步按钮。