在使用xpath/css
选择器面临问题从网站选择城市时,让我知道解决方案
List<WebElement> frm=driver.findElements(By.cssSelector("html body div#gi_midcontent.col-md-12.col-sm-12.col-xs-12.pad0 div#gi_mid_in div#viewContainer div#flights-home-view.homeContainer.col-md-12.col-sm-12.col-xs-12.myPropDisplay div.homeContainerInner div#searchWidgetNew.blueBg.homeWidgetWrap.posRel form#gi_search div#searchWidgetCommon div.formWrap.padT15 div#source_st.fl_shAutosgBox.col-md-5.col-sm-5.col-xs-12.autoSuggestBox.marginB10 input#gi_source_st.form-control.inputTxtLarge.fromTxt.posRel"));
答案 0 :(得分:0)
一些事情。
我之前提到的原因是你的css定位器看起来很可怜,你试图识别的定位器同时具有名称和id,如果你现在如何使用定位器,你可以想出来。
答案 1 :(得分:0)
问题中指定的选择器混合了id和class。但是,看一下网站,建议的城市列表不是作为一组输入元素提供的,而是从AJAX中提取的。
使用Postman工具在此URL上发送GET查询,您可以获取带有对象列表的JSON数据。 json的属性[&#34;数据&#34;] [&#34; r&#34;] [索引] [&#34; xtr&#34;] [&#34; cn&#34;]似乎是一个字符串&#34; CityName&#34;。此API不需要身份验证,因此也可以使用Java HttpClient获取它。
https://voyager.goibibo.com/api/v1/flights_search/find_node_by_name_v2/?search_query=hint&limit=10
样本结果:
{
"data": {
"r": [
{
"s_sc": 5055001,
"xtr": {
"cn": "Beica",
"cid": "1918715907401915921",
"cc": "ET",
"dis_type": "ldis",
"ar": 0,
"eid": "7717797727439208389",
"cnt_n": "Ethiopia",
"cnt_id": "1871100673297067773",
"dis": 0
},
"iata": "BEI",
"n": "Beica Airport",
"mt": "Beica Airport ### Beica",
"t": "airport",
"_id": "7717797727439208389",
"ct": {
"_id": "1918715907401915921",
"n": "Beica"
}
},
...
]
}
}
请替换&#34;提示&#34;使用您的查询字符串,例如,一个开头的字母。另请注意,在一个查询中(页面)限制不能大于50。