无法单击不可见的选择python

时间:2016-09-10 17:31:12

标签: python selenium web-scraping

我正在尝试从this website

中检索所有可能的列表

模型仅在选择年份时打开。类似地,只有在选择模型时才会打开。我想存储Year,Model和Make的所有组合用于学习目的。

但是我无法仅点击年份字段。它似乎是隐藏的,如果没有这个,我就无法继续使用其他代码。

   $validator = Validator::make($request->all(), [
    'class_code' => 'required|exists:classrooms,class_code',
   ],[
    'class_code.required' => 'Please specify the Class Code', // change this to your required message
    'class_code.exists' => 'Your code is wrong'
   ]);

它给出错误: -

  

消息:没有这样的元素:无法找到元素:{"方法":" id","选择器":" sbToggle_27562807" }

3 个答案:

答案 0 :(得分:1)

每次重新加载页面时元素ID都会发生变化,您必须找到一种不同的方式来查找下拉列表。

例如,您始终可以找到带有“ - 选择年份 - ”文字的<a>链接。

答案 1 :(得分:1)

使用此CSS选择器转到选择年份下拉列表中向下的箭头

"div[id='fldYear'] > div[class='sbHolder'] > a[class='sbToggle']"

或此xpath

"//div[@id='fldYear']/div[@class='sbHolder']/a[@class='sbToggle']"

点击这个以获取选项

答案 2 :(得分:1)

  

消息:没有这样的元素:无法找到元素:{&#34;方法&#34;:&#34; id&#34;,&#34;选择器&#34;:&#34; sbToggle_27562807&#34; }

year元素未隐藏,实际上使用find_element_by_id('sbToggle_27562807')定位元素的定位器不正确。在此元素中,id属性值会动态更改您无法找到此元素的原因。

您应该尝试使用一些不同的定位器,而不是id定位器。我建议,为了更好地尝试使用find_element_by_css_selector(),如下所示: -

el = driver.find_element_by_css_selector("div#fldYear a.sbToggle")
el.click()