【发布时间】:2018-09-16 09:28:34
【问题描述】:
我在尝试自动执行公司内部网站中的重复性任务时遇到了一些问题。
虽然我可以在其他网站中正确找到元素(单击、发送密钥等),但我不能在这个网站中做同样的事情(我总是得到的错误是“无法使用 xpath 找到元素 em> == ...")。
我尝试用 Selenium IDE 完成相同的任务记录它们,并且效果很好。
如果我将 Selenium IDE 测试用例导出为 python 代码并将 xpath 命令与我的命令进行比较,xpath 是相同的,并且我使用 firefox 选择器到我想要单击的点得到的也是相同的。
由于其他原因我必须使用资源管理器(所以我有资源管理器 webdriver 等),我没有尝试使用 python+(Firefox 的 webdriver)运行代码。
代码:
from selenium import webdriver
import time
driver=webdriver.IE("D:\myfolder\IEDriverServer.exe")
driver.implicitly_wait(30)
base_url="https://companywebsite.ext")
driver.get(base_url) #it's ok until now, I can open the webpage
time.sleep(20)
element=driver.find_element_by_xpath("/html/body/div[2]/div/table/tbody/tr[3]")
time.sleep(10)
这是我的问题:
1) 为什么我可以在其他网站上做正确的事情而不是在这个网站上?
2) 为什么 Selenium IDE 能够做到这一点,并且使用相同的命令,它不适用于我的 python 脚本?
3) 我必须进行特定设置吗?
非常感谢。
【问题讨论】:
-
您的公司网站是用 Angular 编写的吗?如果是这样,您应该尝试使用等待元素
-
谢谢你,摩西。我认为它不是用 Anguar 编写的,因为如果我在浏览器控制台中搜索 angular 元素,我什么也找不到。
-
你试过用IE驱动其他网站吗?
-
是的,而且效果很好。我在 Facebook、Linkedin 等中尝试过:我成功地点击了链接或将密钥发送到表单。您知道可能是什么问题吗?
-
如果我想等待页面中发生某些事情,正如您建议谈论的角度元素,我应该使用哪种命令?一般的 time.sleep 命令是否足以实现这一目标?
标签: python selenium internet-explorer selenium-webdriver