喜欢猫的白菜 发表于 2012-4-19 10:29:52

selenium弹出窗出现了问题

我用的测试工具是selenium IDE
录制过程:
在firefox浏览器下点击百度,搜索昆明三九手机网,点其链接进去后,点导航内的苹果系列。
结果录制回放的时候在点击《苹果系列》的这个行为上selenium出现错误。

错误信息:
Element link=苹果系列 not found;

能告诉我怎么解决此问题么?
我在selenium内转化C#后在winform控件中运行.
调试后,同样在这出现了异常,一开始我以为是需要加上等待时间.
selenium.WaitForPageToLoad("30000");加上后同样没用.
求各位大侠解释

jacksonren1987 发表于 2012-4-19 16:13:49

ide里录制以后的回放可以成功么?表示从没转化过c#。。。

喜欢猫的白菜 发表于 2012-4-19 16:32:59

回复 2# jacksonren1987


   
可以的...就是会出现问题

六月天 发表于 2012-4-19 17:19:38

没办法解决,javascript的安全策略,你只能在一个域里面操作,不能跨出去。
百度是一个域,其实你在录制的时候也看到了,你的base-URL就是baidu.com,那个手机网是另一个域,javascript不允许你从base-URL跳去另一个域进行操作的,所以找不到元素了。

喜欢猫的白菜 发表于 2012-4-20 09:36:15

回复 4# 六月天
能用C#嵌入浏览器么?这种方法可行么?

WANDY 发表于 2012-4-20 10:27:55

click不行,试试clickAt方法。
再不行把Link换掉,用 Xpath, CSS等方法。
CSS=a
Xpath = //a


另外,如果是那种new window/frame的情况,需要用 switch_to_window/frame方法进行跳转,然后再操作。

喜欢猫的白菜 发表于 2012-4-20 11:06:46

回复 6# WANDY
能说得再详细点么?小弟新手..谢谢了:lol

六月天 发表于 2012-4-20 12:50:08

6楼的方法应该同样解决不了问题。

WANDY 发表于 2012-4-20 13:02:42

我的思考是这样子的。

Click方法改为ClickAt 这个也是自带的,不过不知道C#里面有没有,如果没有的话,就不用替换了。EX: selenium.click==>> selenium.clickAt

或者更改查找对象的方法。如,改成Xpath或者CSS试试:
selenium.Click("Link=苹果系列"); ==>>selenium.Click("//a");

编码问题?(这个问题用python处理中文的时候我遇到过,不过C#我不清楚会不会有这类问题。)

试试在firefox运行。winform控件里运行不清楚-。-

基本上就这样了,如果楼主解决了这个问题,也希望分享一下方案。

六月天 发表于 2012-4-20 17:34:54

都说了不是定位的问题,定位本身没有任何问题的,不信的话,去掉百度那一段,把url-base改成那个九州手机网的地址,然后用原来的click事件,完全是正常运行的。所以你不管改click还是clickat,不管用什么定位方法,只要是百度链接过去的,肯定只有一个结果:not found。
不解决同源问题就没办法跨域执行,就这么简单。所以这个问题别想了。

左岸右转 发表于 2012-6-28 14:27:25

回复 9# WANDY


    python怎么解决

pcxty 发表于 2012-11-24 16:58:45

Target,直接换上名称,就可以了。

msnshow 发表于 2012-11-24 17:16:52

没玩过,学习了

fengerapple 发表于 2013-1-25 18:12:53

Thank you very much for sharing!The good man!The good life of peace!

飞扬菲儿 发表于 2013-8-22 09:51:01

selenium ide不支持跨域。所以脚本找不到弹出页面的元素。

zip 发表于 2015-12-7 14:32:54

我也有这个问题 !
页: [1]
查看完整版本: selenium弹出窗出现了问题