以下是我的python硒代码
def provideDetails(self, titleEleName, titleText, sbmtBtnName, dropdownOptn, dropdownName):
self.ui.jobs.setJobTitleEleName(titleEleName, titleText)
elem = self.ui.jobs.selectButton(dropdownName)
if elem.is_displayed():
self.ui.jobs.selectButton(dropdownName)
self.ui.sleep(4)
self.ui.jobs.selectAor(dropdownOptn)
else:
self.ui.jobs.selectAddAors(dropdownOptn)
self.ui.sleep(4)
self.ui.jobs.selectButton(sbmtBtnName)
我必须检查'elem'是否存在。 如果存在,则应发生“如果”条件,否则应发生“其他”条件。 我尝试了这段代码。而且我收到此错误“属性错误:无类型对象没有属性'is_displayed'。 任何帮助,将不胜感激。谢谢。
此外,是否还有其他方法可以检查元素是否存在并遵循if else命令
答案 0 :(得分:0)
根据评论,selectButton
将执行点击操作,但不会返回Web元素。让我用Java解释
WebElement e = driver.findElement(By.xpath("//elementPath"));
e
是可单击的网络元素
e.click();
或者可以验证元素是否显示(如果有条件的话)
e.isDisplayed();
但WebElement e = driver.findElement(By.xpath("//elementPath")).click();
无效。在Java中,一旦编写,它就会向您显示Eclipse之类的编辑器中的异常。因此driver.findElement(By.xpath("//elementPath")).click();
将不会返回到要显示的元素。
答案 1 :(得分:0)
一个好方法是使用explicit wait。期望检查元素是否存在于页面的DOM上并且可见。可见性意味着不仅显示元素,而且其高度和宽度都大于0。请看示例:
self.ui.jobs.setJobTitleEleName(titleEleName, titleText)
browser = webdriver.Chrome()
wait = WebDriverWait(browser, 5)
try:
wait.until(EC.visibility_of_element_located((By.NAME, dropdownName)))
self.ui.jobs.selectButton(dropdownName)
self.ui.sleep(4)
self.ui.jobs.selectAor(dropdownOptn)
except TimeoutException:
self.ui.jobs.selectAddAors(dropdownOptn)
self.ui.sleep(4)
self.ui.jobs.selectButton(sbmtBtnName)
使用if / else语句的解决方案:
def provideDetails(self, titleEleName, titleText, sbmtBtnName, dropdownOptn, dropdownName):
self.ui.jobs.setJobTitleEleName(titleEleName, titleText)
browser = webdriver.Chrome()
wait = WebDriverWait(browser, 5)
elem = wait.until(EC.visibility_of_any_elements_located((By.NAME, dropdownName))) # will return a list of elements
if elem:
self.ui.jobs.selectButton(dropdownName)
self.ui.sleep(4)
self.ui.jobs.selectAor(dropdownOptn)
else:
self.ui.jobs.selectAddAors(dropdownOptn)
self.ui.sleep(4)
self.ui.jobs.selectButton(sbmtBtnName)
期望检查网页上是否存在至少一个可见元素。定位器用于查找元素,找到后返回WebElement列表。
进口:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException