单击具有 href 属性的链接<li>



我试图点击登录链接,但系统抛出noSuchElementException。我也尝试过xpath,但我无法点击登录按钮,我正在附加代码

from selenium import webdriver
from selenium.webdriver.common.by import By
import time
class CreateAccount:
def signUp(self):
    browser = webdriver.Firefox()
    browser.get("http://www.scrumdo.com")
    time.sleep(5)
    browser.find_element_by_link_text("Login").click()
    time.sleep(5)
    browser.find_element_by_xpath("//a[@href='/account/signup']").click()
    time.sleep(5)
    browser.find_element_by_xpath("//input[@name='username']").send_keys("Rockyhandsome")
    browser.find_element_by_xpath("//input[@name='fullname']").send_keys("Naqash Zafar")
    browser.find_element_by_xpath("//input[@name='email']").send_keys("naqash.zafar@kualitatem.com")
    browser.find_element_by_xpath("//input[@name='password']").send_keys("k12345678")
    browser.find_element_by_xpath("//button[@type='submit']").click()
CA = CreateAccount()
CA.signUp()


追溯详细信息

Traceback (most recent call last):
    File "C:/Users/naqash.zafar/PycharmProjects/Assignments/CreateAccountOnScrumdo.py", line 38, in <module> CA.signUp()
    File "C:/Users/naqash.zafar/PycharmProjects/Assignments/CreateAccountOnScrumdo.py", line 15, in signUp        browser.find_element_by_link_text("Login").click()
    File "C:Usersnaqash.zafarAppDataLocalProgramsPythonPython35-32libsite-packagesseleniumwebdriverremotewebdriver.py", line 314, in find_element_by_link_text
        return self.find_element(by=By.LINK_TEXT, value=link_text)
    File "C:Usersnaqash.zafarAppDataLocalProgramsPythonPython35-32libsite-packagesseleniumwebdriverremotewebdriver.py", line 744, in find_element
        {'using': by, 'value': value})['value']
    File "C:Usersnaqash.zafarAppDataLocalProgramsPythonPython35-32libsite-packagesseleniumwebdriverremotewebdriver.py", line 233, in execute
        self.error_handler.check_response(response)
    File "C:Usersnaqash.zafarAppDataLocalProgramsPythonPython35-32libsite-packagesseleniumwebdriverremoteerrorhandler.py", line 194, in check_response
        raise exception_class(message, screen, stacktrace)
    selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: {"method":"link text","selector":"Login"}
    Stacktrace:
        at FirefoxDriver.prototype.findElementInternal_ (file:///C:/Users/NAQASH~1.ZAF/AppData/Local/Temp/tmpiln2m889/extensions/fxdriver@googlecode.com/components/driver-component.js:10770)
        at FirefoxDriver.prototype.findElement (file:///C:/Users/NAQASH~1.ZAF/AppData/Local/Temp/tmpiln2m889/extensions/fxdriver@googlecode.com/components/driver-component.js:10779)
        at DelayedCommand.prototype.executeInternal_/h (file:///C:/Users/NAQASH~1.ZAF/AppData/Local/Temp/tmpiln2m889/extensions/fxdriver@googlecode.com/components/command-processor.js:12661)
        at DelayedCommand.prototype.executeInternal_ (file:///C:/Users/NAQASH~1.ZAF/AppData/Local/Temp/tmpiln2m889/extensions/fxdriver@googlecode.com/components/command-processor.js:12666)
        at DelayedCommand.prototype.execute/< (file:///C:/Users/NAQASH~1.ZAF/AppData/Local/Temp/tmpiln2m889/extensions/fxdriver@googlecode.com/components/command-processor.js:12608)
    Process finished with exit code 1

您需要单击下拉菜单,然后选择登录按钮:

class CreateAccount:
    def signUp(self):
        browser = webdriver.Firefox()
        browser.get("http://www.scrumdo.com")
        menu = browser.find_element_by_xpath("//button[@class='navbar-toggle']")
        menu.click()
        time.sleep(.25)
        menu.find_element_by_xpath("//li/a[@mixpanel='Homepage Clicked Login']").click()
        browser.find_element_by_xpath("//a[@href='/account/signup']").click()
        time.sleep(.25)
        browser.find_element_by_xpath("//input[@name='username']").send_keys("Rockyhandsome")
        browser.find_element_by_xpath("//input[@name='fullname']").send_keys("Naqash Zafar")
        browser.find_element_by_xpath("//input[@name='email']").send_keys("naqash.zafar@kualitatem.com")
        browser.find_element_by_xpath("//input[@name='password']").send_keys("k12345678")
        browser.find_element_by_xpath("//button[@type='submit']").click()

页面包含一些需要与服务生同步的动态内容。此外,您需要设置窗口的大小,因为布局类型可能会根据宽度而变化:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import WebDriverException
browser = webdriver.Firefox()
wait = WebDriverWait(browser, 20)
browser.set_window_size(1280, 768)
browser.get("http://www.scrumdo.com")
# click login
wait.until(EC.element_to_be_clickable((By.XPATH, "//a[.='Login']"))).click()
# wait for the login button
wait.until(EC.presence_of_element_located((By.ID, "loginButton")))
# click signup
browser.find_element_by_css_selector("a[href='/account/signup']").click()
# wait for the signup form
wait.until(EC.presence_of_element_located((By.ID, "signupForm")))
# fill the form
browser.find_element_by_css_selector("input[name=username]").send_keys("name")
browser.find_element_by_css_selector("input[name=fullname]").send_keys("password")
browser.find_element_by_css_selector("input[name=email]").send_keys("na@na.na")
browser.find_element_by_css_selector("input[name=password]").send_keys("na")
browser.find_element_by_css_selector("button[type=submit]").click()

相关内容

最新更新