2017-12-11 6 views
0

PycharmのPythonで "Selenium WebDriver"を使用していますが、ドロップダウンからクリックしている要素に問題があります。 「Expiry Month」ドロップダウンをクリックすると、すべての値が表示され、「06」が選択され、「Expiry Year」ドロップダウンでは「2021」年が選択されます。コードを実行した後Pythonを使用してSeleniumのspanタグの "pointで要素をクリックできません"

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 = "[email protected]" 
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) 

誰かがこの上で私を助けてくださいことはできますか?

+0

変更

ExpiryYear.click() 

あなたはこれらすべてのスリープを必要はありません – imox

+0

Firefoxのセレンドライバで一度試してみてください。 Seleniumは暗黙的かつ明示的にそれを待っています。あなたは[要素の上に置く]必要があります(https://stackoverflow.com/questions/17293914/how-to-perform-mouseover-function-in-selenium-webdriver-をクリックします。 – lloyd

+0

[Selenium Web Driver&Java]の複製が可能です。要素はポイント(36,72)でクリックできません。他の要素はクリックを受け取ります:](https://stackoverflow.com/questions/44912203/selenium-web-driver-java-element-is-not-clickable-at-point-36-72-other-el) – DebanjanB

答えて

0

セレンのexecute_scriptを試すことができます。

driver.execute_script('arguments[0].click();', ExpiryYear) 
+0

私は両方を試みました。 ExpiryYear.click()はドロップダウンを開くだけです。 とexecute_scriptはすでに使用されていますが、両方とも無駄です:( – TeSter

関連する問題