我正在编写selenium web-driver脚本。脚本的场景是:
1)登录www.yahoomail.com
2)成功登录。
3)点击"撰写"按钮
4)在" To"中输入电子邮件ID。领域。
5)在"主题字段中输入主题。
6)在" Text"中输入电子邮件正文领域。
7)点击"发送"按钮。
使用Firepath,我已经采用了#34; Compose"中提到的字段的xpath。页。 但每当我打开Compose页面时,这个xpath都会动态变化。
以下是我正在使用的脚本:
WebDriver oYahoo = new FirefoxDriver();
oYahoo.get("http://www.yahoomail.com/");
oYahoo.manage().window().maximize();
oYahoo.findElement(By.xpath(".//*[@id='login-username']")).sendKeys("abcdefasdf@yahoo.com");
oYahoo.findElement(By.xpath(".//*[@id='login-passwd']")).sendKeys("sfgas234@123");
oYahoo.findElement(By.xpath(".//*[@id='login-signin']")).click();
oYahoo.findElement(By.xpath(".//*[@id='Compose']/button")).click();
oYahoo.findElement(By.xpath(".//*[@id='yui_3_16_0_1_1448364357109_2222']")).sendKeys("abcdefgh@gmail.com");
oYahoo.findElement(By.xpath(".//*[@id='subject-field']")).sendKeys("Hi This is my first automated mail");
oYahoo.findElement(By.xpath(".//*[@id='yui_3_16_0_1_1448364357109_1966']")).sendKeys("Hi This is my first automated mail");
oYahoo.findElement(By.xpath(".//*[@id='yui_3_16_0_1_1448364357109_2465']")).click();
oYahoo.quit();
我们可以做什么,以便动态地使用Xpath?我们是否需要在某些课程中映射这些内容?我们是否必须为#34; Compose"写任何其他课程?弹出? 如果"是"那我们怎么做呢?
答案 0 :(得分:0)
尝试观察每次重复的常见模式。一个id前缀或类前缀,任何东西。
然后在By.xpath(..)
功能中使用以下选择器。
//*[contains(@id,’your-common-pattern’)]
。
答案 1 :(得分:0)
我参与了一个项目,其中每次生成页面时随机的类名称以及我发现获取那些标签/输入/ ...的独特方式是我使用nth-child()
函数和css选择器。思考方法如下:我想从第一个表的第二行输入第三个。
结帐这个小提琴,了解我的意思。 https://jsfiddle.net/8v150af1/