我是selenium和python的新手,我在找到识别自动化所需页面元素的最佳方法时遇到了问题。 我有一个网页上有很多javascript。当我在登录表单中使用firefox的inspect元素作为用户名字段时,我看到一个带有id的输入标记,但是当我要求selenium找到该ID时,它说它无法找到。 我想仔细检查我在firefox中看到的实际上是selenium看到了什么,所以我尝试了:
with open("login.html","w") s f:
f.write(driver.page_source)
我在结果文件中看不到任何输入元素。
根据我尝试的另一个stackoverflow问题:
DOM=driver.execute_script("return document.documentElement.outerHTML")
with open("login.html","w") as f:
f.write(DOM)
仍然没有输入元素。
有没有更好的方法来查看所有dom元素和/或找到正确的xpath / id来起诉我的selenium脚本?
答案 0 :(得分:0)
尝试按document.body.innerHTM
html = driver.execute_script("return document.body.innerHTML;")
with open("login.html","w") as f:
f.write(html)
答案 1 :(得分:0)
@yong,你在execute_script之前添加长睡眠的建议才是正确的答案。现在我可以在我创建的文件中看到整个html源代码。
此外,现在我的PageObject代码可以填写登录表单并提交。我再睡一觉,然后打印pageurl和title,以确保我已经转到下一页。
最终代码:
driver = webdriver..Firefox()
driver.set_page_load_time(60)
driver.get(URL)
time.sleep(60)
print("URL: "+driver.current_url)
print("Title: "driver.title)
page=LoginPage(driver)
page.username="username"
page.password="password"
page.signin_button.click()
time.sleep(60)
print("URL: "+driver.current_url)
print("Title: "+driver.title)
driver.quit()
感谢大家的建议。