Selenium Timeoutexception错误

时间:2018-06-17 07:51:35

标签: python selenium

仍在处理这个Instagram问题,我真的需要你的帮助。

这是我的代码:

input_button = wait(browser,10).until(EC.element_to_be_clickable((By.XPATH, 
'//button[@class ="chBAG"]')))

action=ActionChains(browser)
action.move_to_element(input_button)
action.click()
action.perform()

这是HTML:

<button class="chBAG">Fermer</button>

但我得到了:

selenium.common.exceptions.TimeoutException: Message: 

有人可以帮我解决这个问题吗?

THX

2 个答案:

答案 0 :(得分:0)

由于输入字段的泛型类,您收到此错误。每次打开页面时,都会随机生成类名。那么如何解决呢?例如:

想象一下你想要登录,你必须:

  1. 点击email输入字段
  2. 类型信息
  3. 点击password输入字段
  4. 类型信息
  5. 点击Log in按钮
  6. 示例代码可能是这样的:

    # xpath will work every time because it is static
    email_input = wait(browser,10).until(EC.element_to_be_clickable((By.XPATH, 
    '//form/div[1]/div/div/input'))) # locate email input
    email_input =ActionChains(browser)
    email_input.move_to_element(email_input)
    email_input.click()
    email_input.sendKeys("email")
    email_input.perform()
    
    password_input = wait(browser,10).until(EC.element_to_be_clickable((By.XPATH, 
    '//form/div[2]/div/div/input'))) # locate password input
    password_input =ActionChains(browser)
    password_input.move_to_element(password_input)
    password_input.click()
    email_input.sendKeys("password")
    password_input.perform()
    
    login_button = wait(browser,10).until(EC.element_to_be_clickable((By.XPATH, 
    '//span/button'))) # locate login button
    login_button_action=ActionChains(browser)
    login_button_action.move_to_element(login_button )
    login_button_action.click()
    login_button_action.perform()
    

    要在搜索栏中搜索内容,您必须执行以下操作:

    1. 点击search输入字段
    2. 类型信息
    3. 等到results加载
    4. 点击results
    5. 中的一个

      代码:

      import time # will be need below
      
      search_input = wait(browser,10).until(EC.element_to_be_clickable((By.XPATH, 
      "//input[@placeholder = 'Search']"))) # locate search input
      search_input =ActionChains(browser)
      search_input.move_to_element(search_input)
      search_input.click()
      search_input.sendKeys("fermer")
      search_input.perform()
      
      time.sleep(5) # wait 5 seconds until dropdown will appear
      
      dropdown_menu = wait(browser,10).until(EC.element_to_be_clickable((By.XPATH, 
      "//a[@href = '/explore/tags/fermermaid/']"))) # locate fermeraid
      dropdown_menu = ActionChains(browser)
      dropdown_menu.move_to_element(dropdown_menu)
      dropdown_menu.click()
      dropdown_menu.perform()
      

答案 1 :(得分:0)

根据您的要求,您可以使用以下代码:

它会搜索&#34; 这是测试&#34;在Instagram的搜索栏中的字符串。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC 

driver = webdriver.Chrome(executable_path = r'D:/Automation/chromedriver.exe')
driver.get("https://www.instagram.com/accounts/login/")

username = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.NAME, "username")))

password = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.NAME, "password")))

username.send_keys("your username")
password.send_keys("your password")
driver.find_element_by_tag_name('button').click()

search = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.XPATH, "//span[text()='Search']")))

search.click()
driver.find_element_by_xpath("//div[@role='dialog']/preceding-sibling::input").send_keys("This is testing")