Selenium没有识别特定HTML中的任何元素,为什么?

时间:2018-04-24 12:58:21

标签: python selenium

我有一个需要迭代的网址列表。我正在处理的过程是selenium打开列表中的每个URL,单击按钮以打开表单,并将一些字符串传递给表单。

我已经到了点击按钮打开表单的程度。我无法使用任何元素将任何字符串传递到表单中。我收到错误'无法找到元素'

这是我的代码到目前为止,easily_apply是网址列表:

for i in easily_apply:
    driver.get(i)
    test = driver.find_element_by_class_name('button')
    test.click()
    test.find_element_by_name("applicant.name")
    test.send_keys("John Smith")

这是有问题的HTML:

<input type="text" aria-describedby="label-input-applicant.name-error" aria-labelledby="label-input-applicant.name" id="input-applicant.name" name="applicant.name" class="icl-TextInput-control icl-TextInput-control--sm">

提前谢谢你。

编辑:

使用xpath的代码,无法正常工作,收到错误&#39;无法找到元素&#39;:

for i in easily_apply:
    driver.get(i)
    test = driver.find_element_by_class_name('indeed-apply-button')
    test.click()
    test.find_element_by_xpath('//input[@type="text"]')
    test.send_keys("John Smith")

EDIT2:

代码在等待,仍然得到相同的错误&#39;无法找到元素&#39;:

for i in easily_apply:
    driver.get(i)
    test = driver.find_element_by_class_name('indeed-apply-button')
    test.click()
    wait = ui.WebDriverWait(driver,60)
    test.find_element_by_name('applicant.name')
    test.send_keys("John Smith")

3 个答案:

答案 0 :(得分:1)

我查看了html,假设您使用的是上一篇文章中的代码,获取了所有易于应用的列表。

您要查找的元素位于嵌套iframe中。你需要切换到那个iframe,然后寻找元素

用Webdriverwait替换time.sleep

driver.find_element_by_css_selector('a[class="indeed-apply-button"]').click()
driver.switch_to.frame(driver.find_element_by_css_selector('iframe[name*=indeed-ia]'))

import time
time.sleep(5)

driver.switch_to.frame(driver.find_element_by_tag_name('iframe'))
driver.find_element_by_id('input-applicant.name').send_keys('Applicant Name')

答案 1 :(得分:0)

尝试使用xpath。

  

在Selenium自动化中,如果id,class,name等常规定位器找不到元素,则使用XPath在网页上查找元素。

语法是: 的的Xpath = //标记名[@attribute =&#39;值&#39;]

希望这有帮助。

答案 2 :(得分:0)

driver.find_element_by_css_selector("#jl_1c27f21fec51d296 > a").click()
time.sleep(10)
driver.find_element_by_css_selector('a[class="indeed-apply-button"]').click()