如何使用“从web元素中选择任何元素”;显示:无“;在Python中使用Selenium属性
我需要使用如何使用“从web元素中选择任何元素”;显示:无“;在Python中使用Selenium属性,python,python-2.7,selenium,selenium-webdriver,Python,Python 2.7,Selenium,Selenium Webdriver,我需要使用display:none属性从web元素中选择如下所示的任何元素: <div class="some_class"> <select id="some_id" class="some_select_class" style="display: none;"> <option value="1" data-isleaf="false" data-catid="3" data-special_message="" data-adtypeid="0"
display:none
属性从web元素中选择如下所示的任何元素:
<div class="some_class">
<select id="some_id" class="some_select_class" style="display: none;">
<option value="1" data-isleaf="false" data-catid="3" data-special_message="" data-adtypeid="0">1</option>
<option value="2" data-isleaf="true" data-catid="4" data-special_message="" data-adtypeid="1">2</option>
</select>
</div>
WebDriverWait
抛出一个包含以下信息的异常:
消息:“”
异常类型为selenium.common.exceptions.TimeoutException
如何实现此元素的交互?在这种情况下,如何选择任何元素
提前感谢。使用execute_script()
设置该元素的显示属性,然后使用SeleniumSelect
选择所需的值
以下代码适用于您:
try:
selenium.webdriver.support.ui.WebDriverWait(driver, 60).until(EC.visibility_of_element_located((By.ID, 'some_other_id_on_page')))
selenium.execute_script("document.getElementById('some_id').style.display='inline-block';")
element = selenium.webdriver.support.ui.WebDriverWait(driver, 60).until(EC.visibility_of_element_located((By.ID, 'some_id')))
selenium.webdriver.support.ui.Select(element).select_by_value('1')
except Exception as ex:
print(ex)
Selenium不会与设置了
display:none
的元素交互。它只与可见元素交互。您可以使用execute\u script()
来设置select
的值。话虽如此,我怀疑页面上的某个可见元素正在设置select
。您可能应该弄清楚那是什么元素,并与之交互。@Richard如果使用execute_脚本,则不会触发从选择中激活的触发器,因此我将无法看到新元素弹出窗口,例如WebDriverWait将抛出异常,因为web元素不是真正可见的OK。请参阅更新的代码,对于first WebDriverWait,您可以检查页面上任何其他元素的可见性,以便我们确保网页已正确加载,然后我们可以更改select标记的显示属性,
try:
selenium.webdriver.support.ui.WebDriverWait(driver, 60).until(EC.visibility_of_element_located((By.ID, 'some_other_id_on_page')))
selenium.execute_script("document.getElementById('some_id').style.display='inline-block';")
element = selenium.webdriver.support.ui.WebDriverWait(driver, 60).until(EC.visibility_of_element_located((By.ID, 'some_id')))
selenium.webdriver.support.ui.Select(element).select_by_value('1')
except Exception as ex:
print(ex)