Selenium—正在寻找将xpath定位器转换为css的示例

Selenium—正在寻找将xpath定位器转换为css的示例,css,xpath,selenium,Css,Xpath,Selenium,我有大量用xpath编写的测试,需要转换为css 我不想使用自动化工具,因为我想借此机会学习在selenium中使用css方法做事的方法 在哪里可以找到定位器从xpath更改为css时的“before”和“after”示例这里有30个xpath到css的“before”和“after”示例: 请注意,css还使用基于0的定位,xpath使用基于1的定位,如: 例如: xpath=(//li[contains(@id,'topic_roles_input')]//input[@type="chec

我有大量用xpath编写的测试,需要转换为css

我不想使用自动化工具,因为我想借此机会学习在selenium中使用css方法做事的方法


在哪里可以找到定位器从xpath更改为css时的“before”和“after”示例这里有30个xpath到css的“before”和“after”示例:

请注意,css还使用基于0的定位,xpath使用基于1的定位,如:

例如:

xpath=(//li[contains(@id,'topic_roles_input')]//input[@type="checkbox"])[1]
css=li#topic_roles_input input[type=checkbox]:nth(0)

名单如下:

//ul[contains(@id,'district-switcher')]//li/ul/li[4]/a
css=ul#district-switcher li > ul > li:nth(3) > a

//ul[contains(@id,'district-switcher')]//a[contains(text(),'District Management Council')]
css=ul#district-switcher a:contains('District Management Council')

//ul[contains(@id,'district-switcher')]//a[contains(text(),'${QA_run_number}')]
css=ul#district-switcher a:contains('${QA_run_number}')

//h3[contains(@id,'active-district')]
css=h3#active-district

//ul[contains(@class,'home-menu')]//a[contains(text(),'Calendar')]
css=ul.home-menu a:contains("Calendar")

//tr[1]//td[contains(@class,'starts_on')]
css=tr td.starts_on

//tr[1]//td[contains(@class,'ends_on')]
css=tr td.ends_on

//ul[contains(@class,'home-menu')]//a[contains(text(),'Schools')]
css=ul.home-menu a:contains('Schools')

//table[contains(@id, 'schools')]//tbody//tr//td/a
css=table#schools tbody tr td a

//a[contains(text(),'6DAYERS')]
css=a:contains('6DAYERS')

//ul[contains(@class,'home-menu')]//a[contains(text(),'Students')]
css=ul.home-menu a:contains(Students)

//body//td[contains(text(),'QA-001')]
css=td:contains('QA-001')

//ul[contains(@class,'home-menu')]//a[contains(text(),'Roles')]
css=ul.home-menu a:contains(Roles)

//table//tr//td[contains(text(),"Language Therapist")]
css=table tr td:contains(LanguageTherapist)

//table//tr//td[contains(text(),"Speech Therapist")]
css=table tr td:contains(Speech Therapist )

//table//tr//td[contains(text(),"DELETE_ME")]
css=table tr td:contains(DELETE_ME)

//ul[contains(@class,'home-menu')]//a[contains(text(),'Activities')]
css=ul.home-menu a:contains(activities)

xpath=(//li[contains(@id,'activity_roles_input')]//input[@type="checkbox"][1])
css=li#activity_roles_input input[@type="checkbox"]:nth(0)

//table[contains(@id,'activities')]//tr//td[contains(text(),"Activity001")]
css=table#activities tr td:contains("Activity001")

//ul[contains(@class,'home-menu')]//a[contains(text(),'Practitioners')]
css=ul.home-menu a:contains(Practitioners)

//table//tr//td[contains(text(),'mdurrant+${QA_run_number}_001@dmcouncil.org')]
css=table tr td:contains(mdurrant+${QA_run_number}_001@dmcouncil.org)

//ul[contains(@class,'home-menu')]//a[contains(text(),'Topics')]
css=ul.home-menu a:contains(Topics)

xpath=(//li[contains(@id,'topic_roles_input')]//input[@type="checkbox"])[1]
css=li#topic_roles_input input[type=checkbox]:nth(0)

//a[contains(text(),'Topic001')]
link=Topic001

//ul[contains(@class,'home-menu')]//a[contains(text(),'Settings')]
link=Settings

//ul[contains(@class,'home-menu')]//a[contains(text(),'Settings')]
css=ul.home-menu a:contains(Settings)

xpath=(//li[contains(@id,'setting_roles_input')]//input[@type="checkbox"])[1]
css=li#setting_roles_input input[type=checkbox]:nth(0)

xpath=(//table/tbody/tr//td/a[contains(@class,'delete_link')])
table > tbody > tr td > a.delete_link

//td[contains(text(),'Setting001')]
css=td:contains('setting001')

//a[contains(text(),'Practitioners')]
css=a:contains(Practitioners)

//tr[td[contains(.,'6 Day')]][1]/td[8]/a@href
tr td:contains('6 Day'):nth(0) + td + td a[href]

下面是30个“before”和“after”xpath到css的示例:

请注意,css还使用基于0的定位,xpath使用基于1的定位,如:

例如:

xpath=(//li[contains(@id,'topic_roles_input')]//input[@type="checkbox"])[1]
css=li#topic_roles_input input[type=checkbox]:nth(0)

名单如下:

//ul[contains(@id,'district-switcher')]//li/ul/li[4]/a
css=ul#district-switcher li > ul > li:nth(3) > a

//ul[contains(@id,'district-switcher')]//a[contains(text(),'District Management Council')]
css=ul#district-switcher a:contains('District Management Council')

//ul[contains(@id,'district-switcher')]//a[contains(text(),'${QA_run_number}')]
css=ul#district-switcher a:contains('${QA_run_number}')

//h3[contains(@id,'active-district')]
css=h3#active-district

//ul[contains(@class,'home-menu')]//a[contains(text(),'Calendar')]
css=ul.home-menu a:contains("Calendar")

//tr[1]//td[contains(@class,'starts_on')]
css=tr td.starts_on

//tr[1]//td[contains(@class,'ends_on')]
css=tr td.ends_on

//ul[contains(@class,'home-menu')]//a[contains(text(),'Schools')]
css=ul.home-menu a:contains('Schools')

//table[contains(@id, 'schools')]//tbody//tr//td/a
css=table#schools tbody tr td a

//a[contains(text(),'6DAYERS')]
css=a:contains('6DAYERS')

//ul[contains(@class,'home-menu')]//a[contains(text(),'Students')]
css=ul.home-menu a:contains(Students)

//body//td[contains(text(),'QA-001')]
css=td:contains('QA-001')

//ul[contains(@class,'home-menu')]//a[contains(text(),'Roles')]
css=ul.home-menu a:contains(Roles)

//table//tr//td[contains(text(),"Language Therapist")]
css=table tr td:contains(LanguageTherapist)

//table//tr//td[contains(text(),"Speech Therapist")]
css=table tr td:contains(Speech Therapist )

//table//tr//td[contains(text(),"DELETE_ME")]
css=table tr td:contains(DELETE_ME)

//ul[contains(@class,'home-menu')]//a[contains(text(),'Activities')]
css=ul.home-menu a:contains(activities)

xpath=(//li[contains(@id,'activity_roles_input')]//input[@type="checkbox"][1])
css=li#activity_roles_input input[@type="checkbox"]:nth(0)

//table[contains(@id,'activities')]//tr//td[contains(text(),"Activity001")]
css=table#activities tr td:contains("Activity001")

//ul[contains(@class,'home-menu')]//a[contains(text(),'Practitioners')]
css=ul.home-menu a:contains(Practitioners)

//table//tr//td[contains(text(),'mdurrant+${QA_run_number}_001@dmcouncil.org')]
css=table tr td:contains(mdurrant+${QA_run_number}_001@dmcouncil.org)

//ul[contains(@class,'home-menu')]//a[contains(text(),'Topics')]
css=ul.home-menu a:contains(Topics)

xpath=(//li[contains(@id,'topic_roles_input')]//input[@type="checkbox"])[1]
css=li#topic_roles_input input[type=checkbox]:nth(0)

//a[contains(text(),'Topic001')]
link=Topic001

//ul[contains(@class,'home-menu')]//a[contains(text(),'Settings')]
link=Settings

//ul[contains(@class,'home-menu')]//a[contains(text(),'Settings')]
css=ul.home-menu a:contains(Settings)

xpath=(//li[contains(@id,'setting_roles_input')]//input[@type="checkbox"])[1]
css=li#setting_roles_input input[type=checkbox]:nth(0)

xpath=(//table/tbody/tr//td/a[contains(@class,'delete_link')])
table > tbody > tr td > a.delete_link

//td[contains(text(),'Setting001')]
css=td:contains('setting001')

//a[contains(text(),'Practitioners')]
css=a:contains(Practitioners)

//tr[td[contains(.,'6 Day')]][1]/td[8]/a@href
tr td:contains('6 Day'):nth(0) + td + td a[href]

我知道你自己已经回答了,但我发誓,这个网站有一个非常好的图表,显示了你到底在问什么:


我知道你自己已经回答了,但我发誓,这个网站有一个非常好的图表,精确地显示了你的问题:


仅供参考,没有像
:contains()
这样的CSS选择器。这是一个多年前就被废弃的早期提案。它在Selenium中不起作用。一些软件实现了
:contains()
,尽管它已从CSS规范中删除。Selenium IDE可能允许它,但Selenium 2(WebDriver)和Selenium RC不允许。hmmm,我读到“css2 contains函数不在css3中,但是Selenium支持CSS 1、2和3的超集。”你确定支持只存在于IDE中吗?不,你听错了。
:contains()
选择器从来都不是CSS2的一部分。它是在CSS3中提出的,但在2005年最后一次调用工作草案之前被删除。仅供参考,没有像
:contains()
这样的CSS选择器。这是一个多年前就被废弃的早期提案。它在Selenium中不起作用。一些软件实现了
:contains()
,尽管它已从CSS规范中删除。Selenium IDE可能允许它,但Selenium 2(WebDriver)和Selenium RC不允许。hmmm,我读到“css2 contains函数不在css3中,但是Selenium支持CSS 1、2和3的超集。”你确定支持只存在于IDE中吗?不,你听错了。
:contains()
选择器从来都不是CSS2的一部分。它在CSS3中提出,但在2005年最后一次调用工作草案之前被删除。