Selenium 下拉菜单是 div
Selenium dropmenu is div
我正在使用 python+selenium 模拟下拉菜单中的点击选项
这是下拉菜单图片
enter image description here
这里是 3 个不同选项的页面源
<a onclick="DigitSelected('TabMasterContent','N','sub_3','3587822','C')"><table class="chRT"><tbody><tr><td class="chC1p">C</td><td class="chC2p">Hastelloy C-22</td><td class="chC3p">526.00</td><td class="chC4p">73.64</td><td class="chC5p">0</td></tr></tbody></table></a>
<a onclick="DigitSelected('TabMasterContent','N','sub_3','3587823','D')"><table class="chRT"><tbody><tr><td class="chSC1p">D</td><td class="chSC2p">Hastelloy C-4 (2.4610)</td><td class="chSC3p">0.00</td><td class="chSC4p">0.00</td><td class="chSC5p">0</td></tr></tbody></table></a>
<a onclick="DigitSelected('TabMasterContent','N','sub_3','3587824','S')"><table class="chRT"><tbody><tr><td class="chC1p">S</td><td class="chC2p">Stainless steel 316</td><td class="chC3p">0.00</td><td class="chC4p">0.00</td><td class="chC5p">0</td></tr></tbody></table></a>
我想做的只是模拟点击不同的选项。我正在使用 selenium IDE 得到的代码应该是这样的
driver.find_element(By.CSS_SELECTOR, ".chRow:nth-child(2) .chC2p").click()
但我只是想使用代码 select 与选项的第一个字母不同的选项,"C"、"D"、"S",你有没有这样做的好主意?
比如这个,我知道不行
driver.find_element_by_partial_link_text("S").click
诱导 WebDriverWait
和 element_to_be_clickable
() 并跟随 XPath
.
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//a[.//td[text()='C']]"))).click()
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//a[.//td[text()='D']]"))).click()
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//a[.//td[text()='S']]"))).click()
您需要导入以下库。
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
根据 HTML 你已经分享了所有的子 <td>
标签似乎在单独的 <a>
标签中。现在因为元素是 JavaScript enabled elements to click()
on different options you you have to induce WebDriverWait for the element_to_be_clickable()
and you can use either of the following xpath :
点击数字的行为C
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[starts-with(@onclick,'DigitSelected')][./table/tbody/tr/td[text()='C']]")))
点击数字行为D
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[starts-with(@onclick,'DigitSelected')][./table/tbody/tr/td[text()='D']]")))
点击数字的行为S
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[starts-with(@onclick,'DigitSelected')][./table/tbody/tr/td[text()='S']]")))
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
我正在使用 python+selenium 模拟下拉菜单中的点击选项
这是下拉菜单图片 enter image description here
这里是 3 个不同选项的页面源
<a onclick="DigitSelected('TabMasterContent','N','sub_3','3587822','C')"><table class="chRT"><tbody><tr><td class="chC1p">C</td><td class="chC2p">Hastelloy C-22</td><td class="chC3p">526.00</td><td class="chC4p">73.64</td><td class="chC5p">0</td></tr></tbody></table></a>
<a onclick="DigitSelected('TabMasterContent','N','sub_3','3587823','D')"><table class="chRT"><tbody><tr><td class="chSC1p">D</td><td class="chSC2p">Hastelloy C-4 (2.4610)</td><td class="chSC3p">0.00</td><td class="chSC4p">0.00</td><td class="chSC5p">0</td></tr></tbody></table></a>
<a onclick="DigitSelected('TabMasterContent','N','sub_3','3587824','S')"><table class="chRT"><tbody><tr><td class="chC1p">S</td><td class="chC2p">Stainless steel 316</td><td class="chC3p">0.00</td><td class="chC4p">0.00</td><td class="chC5p">0</td></tr></tbody></table></a>
我想做的只是模拟点击不同的选项。我正在使用 selenium IDE 得到的代码应该是这样的
driver.find_element(By.CSS_SELECTOR, ".chRow:nth-child(2) .chC2p").click()
但我只是想使用代码 select 与选项的第一个字母不同的选项,"C"、"D"、"S",你有没有这样做的好主意? 比如这个,我知道不行
driver.find_element_by_partial_link_text("S").click
诱导 WebDriverWait
和 element_to_be_clickable
() 并跟随 XPath
.
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//a[.//td[text()='C']]"))).click()
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//a[.//td[text()='D']]"))).click()
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//a[.//td[text()='S']]"))).click()
您需要导入以下库。
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
根据 HTML 你已经分享了所有的子 <td>
标签似乎在单独的 <a>
标签中。现在因为元素是 JavaScript enabled elements to click()
on different options you you have to induce WebDriverWait for the element_to_be_clickable()
and you can use either of the following xpath
点击数字的行为
C
:WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[starts-with(@onclick,'DigitSelected')][./table/tbody/tr/td[text()='C']]")))
点击数字行为
D
:WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[starts-with(@onclick,'DigitSelected')][./table/tbody/tr/td[text()='D']]")))
点击数字的行为
S
:WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[starts-with(@onclick,'DigitSelected')][./table/tbody/tr/td[text()='S']]")))
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC