Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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-从Selenium中的列表中选择项_Python_List_Selenium - Fatal编程技术网

Python-从Selenium中的列表中选择项

Python-从Selenium中的列表中选择项,python,list,selenium,Python,List,Selenium,首先,我想为这个令人困惑的标题道歉 为了提供一个描述,我有一个列表列表,每个列表都包含唯一的值。我想运行selenium,点击右列表并点击右链接。假设我的列表如下所示: Africa - South Africa - Uganda - etc Asia - China - India - etc South America - Brazil - Argentina - etc 我想写一个交互代码,用户可以与之交互,这样就可以提供一个可供选择的大陆列表,并根据

首先,我想为这个令人困惑的标题道歉

为了提供一个描述,我有一个列表列表,每个列表都包含唯一的值。我想运行selenium,点击右列表并点击右链接。假设我的列表如下所示:

Africa
  - South Africa
  - Uganda
  - etc
Asia
  - China
  - India
  - etc
South America
  - Brazil
  - Argentina
  - etc
我想写一个交互代码,用户可以与之交互,这样就可以提供一个可供选择的大陆列表,并根据选择提供有条件的国家列表。假设这是我代码的第一部分:

geographic_area = input('\n\n\Select a geographic area: South America, Africa, Asia')
driver.find_element_by_css_selector('input[value="{}"]'.form‌​at(geographic_area)).click()
在这里,向用户提供了一个可供选择的大陆列表,一旦选中,就会单击相应的下拉列表

但是如何编写代码的第二部分呢?我想再次使用
input()
功能,但我会有3个不同的列表。例如,假设我想选择巴西:要这样做,我必须先选择南美,然后选择巴西。我该怎么做呢

以下是一些关于南美商品的信息(非常长):


南美洲↕ 
阿根廷↕ 
布宜诺斯艾利斯
布宜诺斯艾利斯。
卡塔马卡
查科
丘布特省
科尔多瓦
科伦特斯
恩特雷里奥斯
福尔摩沙
胡胡伊
拉潘帕
里奥哈酒店
门多萨
米西奥内斯省
内乌肯
里约内格罗
萨尔塔
圣胡安
圣路易斯
圣克鲁斯
圣达菲
圣地亚哥德尔埃斯特罗酒店
火地岛酒店
图库曼
玻利维亚
巴西↕ 
英亩
阿拉戈斯
阿马帕州
亚马孙
巴伊亚
塞阿拉州
联邦行政区
圣埃斯皮里托酒店
戈亚斯
马兰豪
马托格罗索州
南马托格罗索州
米纳斯吉拉斯酒店
帕拉
帕拉伊巴
巴拉那
伯南布哥
朴
里约热内卢
北里奥格兰德
南里奥格兰德
隆多尼亚
罗赖马州
圣卡塔里纳
圣保罗
塞尔吉佩
托坎廷斯
巴西-名称未知
巴西-名称未知
巴西-名称未知

尝试单击具有精确文本的元素:

continents_countries = {"Asia": ["China", "India", ...], 
                        "Africa": ["South Africa", "Uganda", ...],
                        "South America": ["Brazil", "Argentina", ...]}

geographic_area = input('\n\n\Select a geographic area: South America, Africa, Asia')
country = input('\n\n\Select a country: %s' % ",".join(continents_countries[geographic_area])
driver.find_element_by_xpath('//label[text()="{}"]'.form‌​at(geographic_area)).click()
driver.find_element_by_xpath('//label[text()="{}"]'.form‌​at(country)).click()

尝试单击具有精确文本的元素:

continents_countries = {"Asia": ["China", "India", ...], 
                        "Africa": ["South Africa", "Uganda", ...],
                        "South America": ["Brazil", "Argentina", ...]}

geographic_area = input('\n\n\Select a geographic area: South America, Africa, Asia')
country = input('\n\n\Select a country: %s' % ",".join(continents_countries[geographic_area])
driver.find_element_by_xpath('//label[text()="{}"]'.form‌​at(geographic_area)).click()
driver.find_element_by_xpath('//label[text()="{}"]'.form‌​at(country)).click()

你能为整个“大陆”元素(包括它的国家)共享HTML吗?我该怎么做?我要右击并点击inspect吗?是的。然后您可以右键单击所需元素并选择“复制外部HTML”
如果有帮助,单击此项只需打开国家/地区的下拉列表。它不会点击所有国家,我指的是整个节点块。复制并更新您的问题(“编辑”按钮)。现在还不太清楚,为什么要为大陆显示
span
元素的HTML,而工作选择器用于
input
元素。。。你能为整个“大陆”元素(包括它的国家)共享HTML吗?我该怎么做?我要右击并点击inspect吗?是的。然后您可以右键单击所需元素并选择“复制外部HTML”
如果有帮助,单击此项只需打开国家/地区的下拉列表。它不会点击所有国家,我指的是整个节点块。复制并更新您的问题(“编辑”按钮)。现在还不太清楚,为什么要为大陆显示
span
元素的HTML,而工作选择器用于
input
元素。。。您的用户如何知道要选择哪个国家?:)哦您的意思是只指定特定大陆的国家?我认为这很容易做到。我会在一分钟内更新答案