0

我正在写硒驱动程序脚本。脚本的场景是:
1)登录www.yahoomail.com
2)成功登录。
3)点击“撰写”按钮
4)在“收件人”字段中输入电子邮件ID。
5)输入主题“主题领域。
6)在输入电子邮件正文 “文本” 字段。
7)点击 “发送” 按钮。
如何处理每次动态更改的Xpath?

使用Firepath,我已经采取了上述领域的的XPath 。在“撰写”页面 但每次当我打开撰写页面时,这种动态的XPath变化

下面是我使用的脚本:

WebDriver oYahoo = new FirefoxDriver(); 
    oYahoo.get("http://www.yahoomail.com/"); 
    oYahoo.manage().window().maximize(); 
    oYahoo.findElement(By.xpath(".//*[@id='login-username']")).sendKeys("[email protected]"); 
    oYahoo.findElement(By.xpath(".//*[@id='login-passwd']")).sendKeys("[email protected]"); 
    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("[email protected]"); 
    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?我们是否需要在某些课堂上绘制这些东西?我们是否必须为“撰写”弹出窗口编写任何其他类? 如果“是”,那我们该怎么做呢?

+0

这是自动化的基本问题。我建议你做一些事情,比如找到像“yui_ *”这样的id的“第一个”元素。或者找到一个你可以找到其子的基本元素。 – DMart

回答

0

尝试观察每次重复的常见模式。无论是一个ID前缀或类前缀,任何东西。

然后在您的By.xpath(..)函数中使用以下选择器。

//*[contains(@id,’your-common-pattern’)]

+0

它适合你吗? – Abhinav

0

我在一个项目中,每次生成页面时都会随机输入一个类名,以及我发现获取这些标签/输入/的唯一方式。是我使用了带css选择器的nth-child()函数。思维方法是这样的:我想要从第一个表的第二行开始的第三个输入。

结帐这个小提琴来了解我的意思。 https://jsfiddle.net/8v150af1/