硒:没有找到元素/没有输入

时间:2015-05-17 23:36:21

标签: python selenium selenium-webdriver

我遇到的问题是间歇性的。我已经注意到这个特定网站大约有40-50%的时间。我无法理解为什么会这样。它没有链接到任何特定的浏览器。它与firefox和chrome一起发生。

之前没有发生......

raise TimeoutException(message, screen, stacktrace) selenium.common.exceptions.TimeoutException: Message:

上面的代码应该从excel表中输入名称,并将此excel表中的域名输入到相应的框中。但是,无论出于何种原因,在此过程中,此过程会在选择域框时挂起。

这是一张它的样子: enter image description here

通常“@”标志周围没有红框。该过程在输入该框的值时会受到阻碍......并且只是超时。

所以通过挂断,我的意思是它实际上并没有找到“域”元素。因此,它不会在域框中输入任何内容,从而阻止整个自动化过程并抛出此异常:byte[]

2 个答案:

答案 0 :(得分:0)

我发现这个问题的唯一好方法是执行javascript来设置值。

        WebElement element = idriver.findElement(By.id(("form-search-domain")));

    ((JavascriptExecutor)idriver).executeScript("arguments[0].value = 'sample';", element);

很抱歉,代码示例是Java格式的。但是你所要做的就是执行javaScript document.findElementbyId(" ID")。value ="你的价值"

答案 1 :(得分:0)

认为你出类拔萃的数据如下所示:

enter image description here

test1 ”适用于 - 名字和姓氏文本框

示例”适用于 - Domain.com文本框

所以在代码中你应该改变

inputDomain.send_keys(sheet.cell_value(i,2))

inputDomain.send_keys(sheet.cell_value(i,1))

因为您从第0行和第1列而不是第2列提取数据(样本)

供您参考,请详细阅读以下代码:

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
import xlrd

browser = webdriver.Firefox()
book = xlrd.open_workbook("path_to_excelfile\\sample.xlsx")
sheet = book.sheet_by_name("Sheet1")
i=0
browser.get("https://www.voilanorbert.com")
inputName = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.ID, "form-search-name")))
inputName.click()
inputName.send_keys(sheet.cell_value(i, 0))
inputDomain = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.ID, "form-search-domain")))
inputDomain.click()
inputDomain.send_keys(sheet.cell_value(i, 1))
norbertsearch = browser.find_element_by_name("search")
norbertsearch.click()