Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 碎片选择(值)返回属性错误_Python_Select_Splinter - Fatal编程技术网

Python 碎片选择(值)返回属性错误

Python 碎片选择(值)返回属性错误,python,select,splinter,Python,Select,Splinter,正在尝试从此url获取所有(5)个表 我可以用类型(值)填充各个页面的下拉框,但这不会刷新页面。一次之后,使用nextPage按钮单步遍历页面失败,因为对象不再连接到DOM(我不知道如何在Splitter中绕过它) 尝试填充下拉列表,然后选择它。这将返回以下错误: 回溯(最近一次呼叫最后一次): 因为select元素没有名称,所以例如: browser.find_by_xpath('//select[@id="MRBgvPortScheduleInformation_edlPager"]/op

正在尝试从此url获取所有(5)个表

我可以用
类型(值)
填充各个页面的下拉框,但这不会刷新页面。一次之后,使用nextPage按钮单步遍历页面失败,因为对象不再连接到DOM(我不知道如何在Splitter中绕过它)

尝试填充下拉列表,然后选择它。这将返回以下错误:

回溯(最近一次呼叫最后一次):


因为select元素没有名称,所以例如:

browser.find_by_xpath('//select[@id="MRBgvPortScheduleInformation_edlPager"]/option[@value="2"]')._element.click()

尽管通过调用

selects = browser.find_by_tag('select') 
然后对这些元素调用select方法

selects[0].select(selects[0].value)
但是从回溯中我们可以知道,Splitter将其转换为通过xpath查找

self.find_by_xpath('//select[@name="%s"]/option[@value="%s"]' % (self["name"], value))._element.click()
假设
select
元素有一个名称,如果select没有名称,则会出现错误

<html>
<head>
</head>
<body>
<select id='s1'>
<option value='a'> A </option>
<option value='b'> B </option>
<option value='c'> C </option>
</select>

<select id='s2'>
<option value='a'> A </option>
<option value='b'> B </option>
<option value='c'> C </option>
</select>

</body>
</html>

A.
B
C
A.
B
C
我们可以在上一个HTML页面中重现此错误,在向2
select
元素添加名称后,错误就消失了

self.find_by_xpath('//select[@name="%s"]/option[@value="%s"]' % (self["name"], value))._element.click()
<html>
<head>
</head>
<body>
<select id='s1'>
<option value='a'> A </option>
<option value='b'> B </option>
<option value='c'> C </option>
</select>

<select id='s2'>
<option value='a'> A </option>
<option value='b'> B </option>
<option value='c'> C </option>
</select>

</body>
</html>