我有一个需要迭代的网址列表。我正在处理的过程是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")
答案 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()