Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.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_Selenium_Selenium Webdriver - Fatal编程技术网

python selenium选择下拉选项,其值与正则表达式匹配

python selenium选择下拉选项,其值与正则表达式匹配,python,selenium,selenium-webdriver,Python,Selenium,Selenium Webdriver,我试图单击一个下拉选项,该选项的值以特定字符串结尾 我只知道当我有完整的值,而不仅仅是一个部分字符串匹配时如何做 请帮忙 <select name="dropdown_selected_size_name" autocomplete="off" data-a-native-class="twister-dropdown-highlight" data-a-touch-header="Size" id="native_dropdown_selected_size_name" class="a

我试图单击一个下拉选项,该选项的值以特定字符串结尾

我只知道当我有完整的值,而不仅仅是一个部分字符串匹配时如何做

请帮忙

<select name="dropdown_selected_size_name" autocomplete="off" data-a-native-class="twister-dropdown-highlight" data-a-touch-header="Size" id="native_dropdown_selected_size_name" class="a-native-dropdown twister-dropdown-highlight">
        <option value="0,B0019WTTQE" class="dropdownAvailable" data-a-css-class="dropdownAvailable" id="native_size_name_0" data-a-id="size_name_0" data-a-html-content="6 B(M) US">
            6 B(M) US
        </option>
        <option value="1,B0019WO400" class="dropdownAvailable" data-a-css-class="dropdownAvailable" id="native_size_name_1" data-a-id="size_name_1" data-a-html-content="7 B(M) US">
            7 B(M) US
        </option>
</select>
尝试一:

select.select_by_value('B0019WTTQE').click();
selenium.common.exceptions.NoSuchElementException:消息:无法 找到值为B0019WTTQE的选项

尝试二:

select.select_by_value(re.compile(r'B0019WTTQE$')).click();
TypeError:类型为“\u sre.sre\u Pattern”的参数不可编辑

没有内置的方法来匹配regex的select选项

您必须迭代并检查其中的每一项:

select = Select(browser.find_element_by_id('native_dropdown_selected_size_name'))

pattern = re.compile(r'B0019WTTQE$')
for option in select.options:
    value = option.get_attribute('value')
    if pattern.search(value):
        option.click()
        break

另一种可能的解决方案是使用带有CSS选择器的
结尾:

请注意,还有一个
ends-with()
xpath函数,但据我所知,它是一个浏览器不支持的函数
contains()
肯定不是一个直接的替代方案,但也适用于您的用例:

select = browser.find_element_by_id('native_dropdown_selected_size_name')

option = select.find_element_by_xpath('.//option[contains(@value, "B0019WTTQE")]')
option.click()

非常感谢你的详细回答。您的第二个解决方案给了我以下错误:AttributeError:Select实例没有属性“find_element_by_css_selector”。我也尝试过类似的方法,但结果相同,我也没有在中找到find\u element方法,看起来你的修复程序没有保存?@Imran没有,基本上我已经删除了
Select()
类实例化-
Select
现在只是
浏览器。按\u id(“本机\u下拉菜单\u selected\u size\u name”)查找\u element\u
select = browser.find_element_by_id('native_dropdown_selected_size_name')

option = select.find_element_by_css_selector('option[value$=B0019WTTQE]')
option.click()
select = browser.find_element_by_id('native_dropdown_selected_size_name')

option = select.find_element_by_xpath('.//option[contains(@value, "B0019WTTQE")]')
option.click()