使用Python在Selenium的span标签上“元素不可点击”

时间:2017-12-11 08:45:32

标签: python selenium selenium-webdriver

我在Pycharm上使用Python中的“Selenium WebDriver”,我遇到了元素问题,它从下拉列表中单击。 我想要的是,当点击“到期月”下拉时,它显示所有值并选择“06”,在“到期年份”下拉列表中应选择“2021”年,因为它没有发生。< / p>

import os
import time
import unittest

from selenium import webdriver
from selenium.common.exceptions import *
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.remote.webelement import WebElement
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.select import Select
from selenium.webdriver.support.ui import WebDriverWait

EmailEntry = "teidi@gmail.com"
password = '12345678'
Name = "Taimoor"


class goodswebDropDownMyWallet ( unittest.TestCase ):

    def setUp(self):
        driverlocation = "/Users/new/Documents/Learning/Drivers/selenium-2.53.1/py/selenium/webdriver/chromedriver"
        os.environ["webdriver.chrome.driver"] = driverlocation
        self.driver = webdriver.Chrome(driverlocation)


    def test_Test1(self):
        driver = self.driver
        url = "https://bizplace.theentertainerme.com/"
        driver.get ( url )
        driver.maximize_window ( )
        driver.implicitly_wait ( 10 )
        self.LoginButton = driver.find_element_by_id ( "signin" )
        self.LoginButton.click ( )

        self.LoginEmail = driver.find_element_by_xpath ( "//*[@id='sign_form-default']//div[1]/input[@type='email']" )
        self.LoginEmail.clear ( )
        self.LoginEmail.click ( )
        self.LoginEmail.send_keys ( EmailEntry )

        self.LoginPassword = driver.find_element_by_xpath (
            "//*[@id='sign_form-default']//div[1]/input[@type='password']" )
        self.LoginPassword.clear ( )
        self.LoginPassword.click ( )
        self.LoginPassword.send_keys ( password )

        self.LoginSubmitButton = driver.find_element_by_xpath ( "//*[@id='sign_form-default']//div[3]/input" )
        self.LoginSubmitButton.click ( )
        time.sleep ( 5 )

        IncorrectEPMessage = driver.find_element_by_xpath ( "//*[@id='sign_form-default']/p[2]" )
        if IncorrectEPMessage.is_displayed ( ):
            print ( "Either Email or Password is incorrect" )
        else:
            print ( "Everything is fine" )

        TitleDropdown = driver.find_element_by_xpath ( "//*[@id='user']/li[2]//a" )

        def titleDropDown():

            newactions = ActionChains ( driver )
            newactions.move_to_element ( TitleDropdown ).perform ( )
            time.sleep ( 2 )
            MyProfile = driver.find_element_by_link_text ( "Wallet" )
            newactions.move_to_element ( MyProfile ).perform ( )
            time.sleep ( 3 )
            newactions.move_to_element ( MyProfile ).click ( ).perform ( )
            time.sleep ( 5 )
            Wait = WebDriverWait ( driver, 10 )

        titleDropDown()
        Wait = WebDriverWait(driver, 10, poll_frequency=1,
                                          ignored_exceptions=[NoSuchElementException, ElementNotVisibleException] )
        Wait.until(EC.url_changes((By.TAG_NAME, "h2")))

        time.sleep ( 3 )
        NameofHeading = driver.find_element_by_tag_name ( "h2" )
        print ( NameofHeading.text )
        time.sleep ( 3 )
        AddCreditcard = driver.find_element_by_xpath ( "//*[@id='add_card']//a" )
        AddCreditcard.click ( )

        time.sleep(5)
        ChangingCardHeader = driver.find_element_by_xpath ( "//*[@id='wrapper']/div/div/div/div/div/div/div/div[1]/p" )
        print ( ChangingCardHeader.text )

        CreditCardNumber = driver.find_element_by_id("cardpayment-card_number")
        CreditCardNumber.send_keys('4543474002249996')

        newactions2 = ActionChains (driver)
        ExpiryMonth = driver.find_element_by_xpath("//*[@id='wallet_mobile']/fieldset/div[2]/div[1]/div/div/div/span")
        ExpiryMonth.click()
        Month = driver.find_element_by_xpath("/html/body/div[17]/div/span/span/ul/li[7]/span")
        driver.execute_script("return arguments[0].scrollIntoView();", Month)
        time.sleep(5)
        Month.click()


        ExpiryYear = driver.find_element_by_xpath("//*[@id='wallet_mobile']/fieldset/div[2]/div[2]/div/div/div/span")
        ExpiryYear.click()
        Year = driver.find_element_by_xpath("/html/body/div[17]/div/span/span/ul/li[10]/span")
        driver.execute_script ( "return arguments[0].scrollIntoView();", Year)
        time.sleep(3)
        Year.click()

        CVVEntry = driver.find_element_by_id("cardpayment-cvn")
        CVVEntry.click()
        CVVEntry.send_keys('956')

        CardHolderName = driver.find_element_by_id("cardpayment-card_name")
        CardHolderName.click()
        CardHolderName.send_keys(Name)


    def tearDown(self):
        print ( "Wallet is opening" )


if __name__ == "__main__":
    unittest.main ( )

运行代码后,我遇到以下错误:

Error
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/unittest/case.py", line 58, in testPartExecutor
    yield
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/unittest/case.py", line 600, in run
    testMethod()
  File "/Users/new/PycharmProjects/Selenium/DropDownWallet.py", line 100, in test_Test1
    ExpiryYear.click()
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/webelement.py", line 80, in click
    self._execute(Command.CLICK_ELEMENT)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/webelement.py", line 501, in _execute
    return self._parent.execute(command, params)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 308, in execute
    self.error_handler.check_response(response)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: Element <span class="jcf-select jcf-unselectable jcf-select-form-control">...</span> is not clickable at point (697, 16). Other element would receive the click: <div class="holder">...</div>
  (Session info: chrome=62.0.3202.94)
  (Driver info: chromedriver=2.33.506106 (8a06c39c4582fbfbab6966dbb1c38a9173bfb1a2),platform=Mac OS X 10.13.0 x86_64)

有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用selenium的execute_script。

更改

 StorageFolder appFolder = await ApplicationData.Current.LocalFolder.GetFolderAsync("TestFolder");
            if (appFolder == null)
            {
                //Create folder
                appFolder = await Windows.Storage.ApplicationData.Current.LocalFolder.CreateFolderAsync("TestFolder");
            }

ExpiryYear.click()