Javascript 当ID发生变化时,如何使用selenium作为输入框的目标?
尝试自动化处理Yammer的某些测试。我想做的是使用selenium发布一些东西,但当我点击文本框时,它会改变它的id。此外,每次页面重新加载或发布时,该文本框都会改变它的id 所以我接下来做的是使用通配符,告诉selenium查找Javascript 当ID发生变化时,如何使用selenium作为输入框的目标?,javascript,selenium,yammer,Javascript,Selenium,Yammer,尝试自动化处理Yammer的某些测试。我想做的是使用selenium发布一些东西,但当我点击文本框时,它会改变它的id。此外,每次页面重新加载或发布时,该文本框都会改变它的id 所以我接下来做的是使用通配符,告诉selenium查找 //input[starts-with(id, 'yamjs')] 然而,我很快发现yamjs同时用于更新主体和“+添加人员通知”文本框 两者之间的区别似乎在于阶级。我们感兴趣的文本框有一个class=“yj tapf textarea”,而添加人员通知文本框有一
//input[starts-with(id, 'yamjs')]
然而,我很快发现yamjs同时用于更新主体和“+添加人员通知”文本框
两者之间的区别似乎在于阶级。我们感兴趣的文本框有一个class=“yj tapf textarea”
,而添加人员通知文本框有一个class=“yj callout bar entry field”
如何让selenium在类yj tapf textarea中找到id以yamjs开头的输入字段,而不是类yj callout bar输入字段中的输入字段?似乎我没有对类及其位置给予足够的关注。以下是我最终得到的结果:
driver.findElement(By.className("yj-auto-width-fake-textarea")).click();
driver.findElement(By.className("yj-tapf-textarea")).sendKeys(Text);
driver.findElement(By.id("yj-yam.ui.publisher.old.SubmitButton")).click();
如果id发生变化,那么这可能是一个提示,提示不要使用id作为定位器
使用CSSSelector和XPath可以为您提供更稳定、更可靠的定位器页面(或表单)的结构无论输入的ID/类名如何,始终保持不变?否。似乎只有在单击yj-tapf-textarea后,yj标注栏输入字段才会出现。您是否尝试过类似于存储
class=“yj tapf textarea”中的内容的方法
在一个变量中,并在该变量中搜索您想要的输入?否。我该如何做?在python中:myclass=browser.find\u element\u by\u class('yj-tapf-textarea')
myclass.find('input')
这将返回一个列表,然后您可以迭代该列表,直到找到您想要的(作为测试进行迭代,当您知道需要哪些输入时删除迭代)。希望我讲得通。